一对一的关系,我有三个实体:一到零或EF5流利的映射
public class MainEntity()
{
public long Id { get; set; }
public long EntityAId { get; set; }
public EntityA OptionalEntityA { get; set; }
public long EntityBId { get; set; }
public EntityB OptionalEntityB { get; set; }
public string SProp { get; set; }
}
public class EntityA()
{
public long Id { get; set; }
public long MainEntityId { get; set; }
public MainEntity RequiredEntity { get; set; }
}
public class EntityB()
{
public long Id { get; set; }
public long MainEntityId { get; set; }
public MainEntity RequiredEntity { get; set; }
}
所有三个实体必须通过数据库生成有自己的ID:
Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
我如何定义的关系MainEntity和EntityA和EntityB以便具有:
- MainEntity可能有零个或一个EntityA
- MainEntity可以有零或一个EntityB
- EntityA必须有一个MainEntity
- EntityB必须有一个MainEntity
在我MainEntityConfigurationMap我有这样定义关系:
HasOptional(m => m.OptionalEntityA).WithRequired(ea => ea.RequiredEntity);
HasOptional(m => m.OptionalEntityB).WithRequired(eb => eb.RequiredEntity);
展望在生成的迁移我有这EntityA:
CreateTable(
"dbo.EntityA",
c => new
{
Id = c.Long(nullable: false, identity: true),
MainEntityId = c.Long(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.MainEntity", t => t.Id)
.Index(t => t.Id);
实体框架在这里定义了一个共享主键,有没有一种方法可以避免这种情况,并使MainEntityId向MainEntity.Id移动?
感谢拉迪斯拉夫,这是适用于整个EF还是只是代码第一? – Swell
这适用于整个EF。 –