POCO, Entity Insert Error во многих отношениях многие - PullRequest
0 голосов
/ 17 марта 2011

У меня маленькая проблема. Когда я добавляю новый элемент в мою базу данных (EF), у меня было UpdateEception: Невозможно обновить EntitySet 'UserRoles', потому что у него есть DefiningQuery и в элементе нет элемента для поддержки текущей операции. *

У меня очень маленький столик.

Users : 

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

Roles :
- [PK] RoleID
- Name

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

Получить метод

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

работает нормально, но не вставляю: / Я пробую много способов. Я пытаюсь добавить PK в UserRoles, это работает, но не так, как будет. Отношений будет много -> один -> много, не много ко многим, и у меня должен быть еще один класс. Я не знаю, как это исправить.

Мой класс сущностей слишком прост. Список в классе роли и Список в классе пользователя являются виртуальными.

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>();
    }
}

1 Ответ

0 голосов
/ 18 марта 2011

Вы должны создать составной ключ (UserID, RoleID) в вашей таблице UserRoles. Другого пути нет, потому что без определенного первичного ключа таблица отображается как представление только для чтения. Он по-прежнему будет моделировать отношения «многие ко многим», но вам, вероятно, придется сначала удалить свои сущности из модели и снова добавить их при обновлении из базы данных.

...