Я создал класс сущности в моем приложении MVC 3. Одним из атрибутов с именем RegistryId является первичный ключ, а также внешний ключ. Как я могу сделать первичный ключ столбца, а также внешний ключ? Я не использую дизайнер EF ORM. Я программирую классы вручную.
Первичный/внешний ключ в структуре сущностей
Ответ 1
Я думаю, что "не используя EF ORM designer" вы подразумеваете новый DbContext
API от EF 4.1. Потому что, если вы не имеете в виду API DbContext
, вам все равно придется использовать EDMX (дизайнер).
Вы можете использовать аннотации данных (System.ComponentModel.DataAnnotations
): KeyAttribute
и ForeignKeyAttribute
:
public class Registry
{
public virtual int Id { get; set; }
public virtual MyEntity MyEntity { get; set; }
}
public class MyEntity
{
[Key, ForeignKey("Registry")]
public virtual int RegistryId { get; set; }
public virtual Registry Registry { get; set; }
}
Или вы можете использовать свободный API (переопределяя OnModelCreating
в производном контексте):
(Редактирование: свободное отображение было изменено на противоположное и неполное)
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<MyEntity>()
.HasKey(e => e.RegistryId);
modelBuilder.Entity<MyEntity>()
.Property(e => e.RegistryId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<MyEntity>()
.HasRequired(e => e.Registry)
.WithRequiredDependent(r => r.MyEntity);
}
Где MyEntity
- ваша сущность с FK, а Registry
- основной объект в соотношении 1:1.