值对象 就是 实体类中 还有 其他 实体没有标识的 对象 如下
1. 实体对象Shop.cs
namespace aspnetcore016
{
public enum Price
{
RMB,
USD,
EUR
}
public class Shop
{
public long Id { get; set; }
public string ShopName { get; set; }
//值对象
public Coords Coords { get; set; }
public Price Price { get; set; }
}
}
2.Coords.CS
namespace aspnetcore016
{
public class Coords
{
public double Precision { get; set; }
public double Dimension { get; set; }
}
}
3.配置 shopconfig
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace aspnetcore016
{
public class ShopConfig : IEntityTypeConfiguration<Shop>
{
public void Configure(EntityTypeBuilder<Shop> builder)
{
builder.ToTable("Shops");
//表明 EF 将Coords 表示为值对象
builder.OwnsOne(e => e.Coords);
//这句 表明 枚举字段Price 以字符串的形式保存,默认为int型
builder.Property(e=>e.Price).HasConversion<string>();
}
}
}
示例代码
using DBcontext db = new DBcontext();
Shop shop = new Shop { ShopName = "xxx的店铺", Price = Price.RMB, Coords = new Coords { Dimension = 35.52, Precision = 46.23 } };
db.Shops.Add(shop);
db.SaveChanges();