dom*_*mer 3 entity-framework fluent-interface foreign-keys map entity-framework-ctp5
我正在尝试使用Entity Framework CTP5 Fluent API来映射现有数据库.我有以下课程:
public class Shop
{
public long Id
{
get;
set;
}
}
public class Sale
{
public long Id
{
get;
set;
}
public virtual Shop Shop
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
相应的表称为"商店"和"销售".Sales有一个StoreId外键,指向Stores表中的Id字段.
我正在努力将Sale.Shop.Id映射到表中的StoreId.我无权将其更改为ShopId,因此需要对其进行映射.
在CTP4中,我使用:
modelBuilder.Entity<Sale>().MapSingleType(x =>
new
{
Id = x.Id,
StoreId = x.Shop.Id
});
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
modelBuilder.Entity<Sale>().Property(x => x.Shop.Id).HasColumnName("StoreId");
Run Code Online (Sandbox Code Playgroud)
但是,它似乎只适用于原始类型.
如何指定此映射?
更新:我在下面添加了EF 4.1候选版本的修订版本
经过一番狩猎,我找到了适合我的答案:
EF4.1 RC版本:
modelBuilder.Entity<Booking>().HasRequired(b => b.Booker)
.WithMany(m => m.BookedSlots).Map(p=>{
p.MapKey("BookerID");
});
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
modelBuilder.Entity<Sale>().HasRequired(sale => sale.Shop)
.WithMany().Map(s=> {
s.MapKey("StoreId");
});
Run Code Online (Sandbox Code Playgroud)
我的版本略有不同,因为我在关系的两边都有导航属性.