我有类似的结构,如下所示。
public class Price
{
public decimal Amount {get; set;}
public string Currency {get; set;}
}
public class Product : BaseEntity
{
public int Id {get; set;}
public string Name {get; set;}
public Price Price {get; set;}
}
我想在数据库中使用Product表,将Price与其属性区分开来。例如;
**ProductTable**
--Id
--Name
--Amount
--Currency
然后,当我从数据库获取产品时,它会自动将金额和货币绑定到产品<的价格对象/ strong>即可。我应该如何使用Entity Framework Code First创建此结构?
答案 0 :(得分:4)
Price属性必须是虚拟的,它应该有效:
public class Product
{
public int Id {get; set;}
public string Name {get; set;}
public virtual Price Price {get; set;}
}
修改强>
您可以在OnModelCreating
类中通过覆盖DbContext
方法指定自定义列名称:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().Property(u => u.Price.Amount)
.HasColumnName("Amount");
}
答案 1 :(得分:2)
Price
创建一个单独的表格
但在你的情况下,我不认为你需要一个单独的表 因此,将价格定义为复杂类型会在同一个表中将其与“数据”附加到数据库字段名称相同,并且还会在重新搜索或保存数据时自动映射名称
[ComplexType]
public class Price
{
public decimal Amount {get; set;}
public string Currency {get; set;}
}
详细了解[ComplexType]