Сначала я использую новый код EF для одного моего проекта, и я получаю странную ошибку, мой режим:
abstract class Member
{
public virtual int MemberId;
... some other stuff
}
class User : Member
{
public virtual string Name;
... some more props no new key defined
}
class MyDbContext
{
public DbSet<User> Users {get;set;}
}
Результат развертывания на SQL Server просто в порядке, у меня есть таблица членов и таблица пользователей (TPC).
Теперь у меня в основном есть следующий код:
static Main()
{
User x,y;
using(MyDbContext ctx = new MyDbContext())
{
x = ctx.Users.Create();
y = ctx.Users.Create();
x.Name = "SomeUser";
y.Name = "SomeUser2";
ctx.SaveChanges();
}
}
При сохранении изменений я получаю:
"Необработанное исключение:
System.Data.Entity.Infrastructure.DbUpdateException:
Произошла ошибка при обновлении
записей. Смотрите внутреннее исключение для
подробности. --->
System.Data.UpdateException: ошибка
произошло при обновлении записей.
Смотрите внутреннее исключение для деталей.
---> System.Data.SqlClient .SqlException: нарушение ПЕРВИЧНОГО
КЛЮЧЕВОЕ ограничение
'PK_ Пользователи _0CF04B1821B6055D. Не могу
вставить дубликат ключа в объект
'dbo.Users'. "
MemberId по умолчанию является личностью, поэтому я просто не вижу, что здесь происходит. Я пытался создать экземпляры с новыми и прикрепить их к контексту, но ошибка была та же, какие-нибудь идеи?
База данных пуста!
Спасибо.
РЕДАКТИРОВАТЬ: Забыл сказать, что Member является абстрактным классом, извините за это.