开发者

POCO, Entity Insert Error in many to many relation

开发者 https://www.devze.com 2023-02-18 14:53 出处:网络
I have a little problem. When i\'ll add a new item into my databse(EF) i had a UpdateEception : Unable to update the EntitySet \'UserRoles\' because it has a DefiningQuery and noelement exists in thee

I have a little problem. When i'll add a new item into my databse(EF) i had a UpdateEception : Unable to update the EntitySet 'UserRoles' because it has a DefiningQuery and no element exists in the element to support the current operation.

I have a very small table.

Users : 

- [PK] UserID
- Login
- Password
- Email
- IsActive

Roles :
- [PK] RoleID
- Name

UserRoles :
- [FK] UserID
- [FK] RoleID

Get method

User u = db.Users.Single(x => x.Login == "scott");

works fine, but insert not :/ I try a lots of way. I try add 开发者_运维知识库PK to UserRoles, it work, but not like it will be. The relations will be many -> one -> many, not many to many and i must have a one additional class. I don't know how to fix this.

My Entity Class is too very simple. The List in role class and List in user class are virtual.

public class TestDBEntity : ObjectContext
{
    public ObjectSet<Role> Roles { get; set; }
    public ObjectSet<User> Users { get; set; }

    public TestDBEntity()
        : base("name=TestDBEntities", "TestDBEntities")
    {
        ContextOptions.LazyLoadingEnabled = true;

        this.Roles = CreateObjectSet<Role>();
        this.Users = CreateObjectSet<User>();
    }
}


You must create composite key (UserID, RoleID) in your UserRoles table. There is no other way because without defined primary key the table is mapped as readonly view. It will still model as many-to-many relationship but you will propably have to first remove your entities from model and add them again by update from database.

0

精彩评论

暂无评论...
验证码 换一张
取 消