2014-09-18 10 views
0

Я создаю модель, которая использует GUID для первичного ключа. Я сам установил GUID, а затем использовал EF для сохранения модели в БД SQL Server. Во время вызова DbContext.SaveChanges() идентификатор GUID изменяется. Могу ли я предотвратить это?Может ли EF предотвратить генерацию первичного ключа

Edit:

Класс не оформлен в любом случае. Guid устанавливается статический конструктор:

public class MyEntity 
{ 
    public Guid MyEntityId { get; set; } 

    public static MyEntity CreateMyEntity() 
    { 
     return new MyEntity { MyEntityId = Guid.NewGuid() }; 
    } 
} 

БД ограничивает поле ID, как PRIMARY KEY CLUSTERED

ответ

0

Вы пробовали настройки вашей организации, как это:

public class SomeEntity 
{ 
    public SomeEntity() 
    { 
     Id = Guid.NewGuid(); 
    } 
    public Guid Id { get; set; } 
} 
+0

Фактически, да. Вот как он настроен. – Ben

1

Вероятно, у вас есть это:

[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public GUID GUIDField { get; set; } 

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] строка указывает EF, чтобы установить значение GUID. удалите этот атрибут, и все готово.

+0

Нет. Класс полностью не декорирован. – Ben

+0

Это класс, который генерирует Entity Framework, а не класс ViewModel – CSharper

+0

@ben явно указывает EF не добавлять Identity: '[DatabaseGenerated (DatabaseGeneratedOption.None)]' – Mahmoodvcs

Смежные вопросы