Tôi mới tham gia vào Khung thực thể và đang cố gắng tìm ra mọi thứ. Tôi có một cơ sở dữ liệu được tạo ra không quá phức tạp. Có khoảng 7 bảng và 3 trong số đó là các bảng ánh xạ để liên kết một bản ghi bảng w/bảng khác. Ví dụ tôi đang sử dụng ở đây là thế này:Sử dụng khung thực thể, làm cách nào để phản ánh mối quan hệ nhiều đến nhiều và thêm các thuộc tính tồn tại cho một thực thể mới được tạo ra?
Bảng tài
- UserId
- UserName
Bảng Vai trò
- Id vai trò
- RoleName
Bảng: UserRole
- UserId
- Id vai trò
Các phím nước ngoài được ánh xạ trong cơ sở dữ liệu của tôi. Khi tôi tạo một mô hình thực thể mới bên trong VS 2008, sơ đồ dường như có các mối quan hệ đúng, nhưng không tạo ra một bảng cho bảng UserRole. Mối quan hệ được ánh xạ dưới dạng Nhiều đến Nhiều giữa Người dùng & Vai trò.
Vấn đề của tôi là tôi có thể tạo người dùng mới và tôi có thể tạo vai trò mới, nhưng tôi không thể tìm ra cách tạo người dùng mới với vai trò hiện tại. Hơn nữa, bảng UserRole có lẽ không được ánh xạ chính xác trong mô hình để bắt đầu. Dưới đây là mã của tôi cho đến nay:
ObjectQuery<Role> roles = context.Roles;
Role role = context.Roles.Where(c => c.RoleName == "Subscriber").First();
User user = new User
{
DisplayName = "TestCreate2",
Email = "[email protected]",
Password = "test"
};
context.AttachTo("Roles", role);
user.Roles.Add(role);
context.AddToUsers(user);
context.SaveChanges();
Đây là lỗi Tôi nhận:
Không thể cập nhật 'UserRoles' các EntitySet bởi vì nó có một DefiningQuery và không có yếu tố tồn tại trong các yếu tố để hỗ trợ hiện tại hoạt động.
Đây là xml có gắn liền với bảng UserRole:
<EntitySet Name="UserRoles" EntityType="RememberTheJourneyModel.Store.UserRoles" store:Type="Tables" store:Schema="dbo" store:Name="UserRoles">
<DefiningQuery>SELECT
[UserRoles].[Role_id] AS [Role_id],
[UserRoles].[User_id] AS [User_id]
FROM [dbo].[UserRoles] AS [UserRoles]</DefiningQuery>
</EntitySet>
Nó được kéo răng chỉ để tìm ra cách để truy vấn các bối cảnh như vậy mà nó đã cho tôi một tổ chức Vai trò thực tế. Tôi chắc chắn vấn đề là một cái gì đó để làm với cách UserRole được ánh xạ, nhưng tôi chỉ mới bắt đầu ở đây và không có bất kỳ ý tưởng mà có thể đã đi sai.
Và tôi thực sự đã tìm kiếm trên google & trang web này, nhưng tôi cho rằng tôi chưa tìm ra thông số tìm kiếm phù hợp để tìm câu hỏi giúp tôi khắc phục sự cố này. Tôi tìm thấy một câu hỏi cho biết EF có vấn đề với điều này, nhưng nếu bạn đang lập bản đồ bảng làm cho cả hai cột một khóa chính, nó hoạt động chính nó ra. Tôi không chắc chắn làm thế nào để làm điều đó. Điều này được thực hiện trong cơ sở dữ liệu (sử dụng SQL SERVER 2005 EXPRESS) hay trong ánh xạ? Đây là một dự án cá nhân để tôi có thể đăng thêm chi tiết về mã hoặc xml nếu cần. Bất kỳ và tất cả các trợ giúp sẽ được đánh giá cao.
Đó là nó! Tôi chỉ không biết cách gán 2 khóa chính. Làm nổi bật cả hai hàng hoạt động. Cảm ơn! – jason
Không sao cả - tôi rất vui được giúp đỡ. – markt