Với một EntityType, chẳng hạn như "Liên hệ", làm thế nào tôi có thể lấy được từ tên của EntitySet nó sẽ thuộc về, tức là số nhiều như "Liên hệ"?Lấy tên EntitySet từ một EntityType trong EF
Trả lời
Nếu bạn đã có một thực thể gắn liền (rõ ràng là bạn không cần dòng đầu tiên, chỉ cần sử dụng thực thể hiện tại của bạn):
Contact c = context.Contacts.Where(x => x.blah).FirstOrDefault();
string setName = c.EntityKey.EntitySetName;
Hoặc nếu bạn không:
string className = typeof(Contact).Name
var container =
context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
string setName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == className
select meta.Name).First();
Rất hay. Tôi cần điều này để thực hiện các tùy chỉnh bổ sung của các thực thể POCO, như thêm các phương thức GetById() cho tất cả các lớp thực thể. –
Genius, tôi đã cố gắng làm điều này cho các lứa tuổi, cảm ơn rất nhiều, +1 cho một câu trả lời tuyệt vời –
Lưu ý rằng các truy vấn CSpace chỉ hoạt động khi bạn kết nối với cơ sở dữ liệu, vì vậy nó sẽ không hoạt động trong các tình huống mà bạn chỉ muốn truy vấn các loại trực tiếp. –
Phần mở rộng này có thể hữu ích
public static class MyExtensions
{
public static string GetEntitySetName<T>(this ObjectContext context)
{
string className = typeof(T).Name;
var container = context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
string entitySetName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == className
select meta.Name).First();
return entitySetName;
}
}
Và sử dụng nó như:
db.AttachTo(db.GetEntitySetName<MyEntityType>(), myEntityInstance);
- 1. EF 4.1 EntityType không có khóa - composite
- 2. EntityType 'x' không có khóa được xác định. Xác định chìa khóa cho EntityType này
- 3. EF Generic Repository lấy Id từ thực thể chung mới được chèn
- 4. Entity Framework 4.3.1 -> 5.0 Ngoại lệ: "EntityType không có khóa được xác định. Xác định khóa cho EntityType này."
- 5. EntityType 'ApplicantPosition' không có khóa được xác định
- 6. Lấy tên của một DLL từ bên trong dll
- 7. Lấy tên đối tượng từ bên trong một hàm
- 8. Cách lấy tên ngày trong tuần từ một ngày?
- 9. EF-Code đầu tiên loại phức tạp với một tài sản hàng hải
- 10. Lấy tên tháng từ số trong PostgreSQL
- 11. Lấy một System.Type từ tên một phần của loại
- 12. Lấy tên bảng từ ActiveRecord
- 13. Lấy tên cột từ java.sql.ResultSet
- 14. Lấy tên của lớp từ một cá thể
- 15. Cách lấy tên ngày từ một ngày đã chọn?
- 16. Lấy tên lớp học từ một mô-đun
- 17. Lấy tên thư mục từ một đường dẫn
- 18. C# lấy tên thư mục từ DirectoryNotFoundException
- 19. lấy id từ vựng theo tên
- 20. Cách lấy tên tệp từ mục đích?
- 21. Lấy cookie từ CookieJar theo tên
- 22. Làm thế nào để tôi xác định các Phím khi làm việc với "EF-Code First"?
- 23. .NET - Lấy tên văn hóa từ cultureCode
- 24. Cách lấy tên máy chủ từ UNC
- 25. Lấy tên miền gốc từ location.host
- 26. Lấy tên tệp từ đường dẫn chuỗi?
- 27. Loại dữ liệu XML trong EF 4.1 Mã Đầu tiên
- 28. Cách lấy tên cột từ GridView?
- 29. Cách lấy Tên miền từ GroupPrincipal?
- 30. PHP - lấy tên màu từ rgb
Tôi đoán bạn không có một thể hiện của đối tượng? – Nix
@Nix Tôi cũng có cùng một vấn đề, Loại của tôi là T param, vì vậy chắc chắn không có trường hợp của đối tượng? –
Tôi phải bình luận và cảm ơn vì điều này, bởi vì tôi đã gặp phải vấn đề tương tự EXACT của 'Contacts' và 'Contact' – cost