EF 4.1 CodeFirst с Guid (не генерируется DB / Store) как PK - PullRequest
7 голосов
/ 25 августа 2011

Я хотел бы создать модель с «сгенерированным клиентом» GUID в качестве первичного ключа. Я хочу, чтобы Guid генерировался автоматически, но НЕ в БД, поэтому я знаю идентификатор до его сохранения, что важно для моей доменной модели.

Как мне настроить:

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

Так что я могу сделать ...

 var newEntity = new MyEntity();
 transmitIDBeforePersisting(newEntity.ID);
 context.MyEntities.Add(newEntity);
 context.SaveChanges()

Как настроить MyEntity.ID таким образом, чтобы он генерировался автоматически при вызове new, но все еще работает как первичный ключ со свойствами nav и т. Д.?

Это похоже на с использованием Guid в качестве PK с кодом EF4 сначала , но НЕ генерируется Store / DB.

1 Ответ

9 голосов
/ 25 августа 2011

Установите значение свойства ID в конструкторе и используйте атрибут [DatabaseGenerated(DatabaseGeneratedOption.None)] в свойстве ID:

public class MyEntity 
{        
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public Guid ID { get; set; }

    public MyEntity()
    {
        ID = Guid.NewGuid();
    }
}
...