c# - 如何在单个字段中存储值对象的集合而不在 EF Core 中创建新表
问题描述
我正在使用 EF Core 作为我的 ORM,并且我正在学习领域驱动设计。
您可能已经知道 DDD 值对象没有标识符,并且为值对象创建单独的表不是好的做法。
但是我想在不创建新表的情况下存储值对象的集合,那么我应该怎么做呢?看下面的例子:
public class User : Entity
{
public ICollection<Address> Addresses { get; set; }
}
public class Address : ValueObject
{
public string Country { get; set; }
public string City { get; set; }
// some other properties
}
解决方案
正如亚历山大所说,我决定使用价值转换(如下所示):
public class UserConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.Property(user => user.Addresses)
.HasConversion(
a => (string)JsonConvert.SerializeObject(a),
a => JsonConvert.DeserializeObject<List<Address>>(a));
/*builder.HasData(Data.GetData<User>());*/
}
}
现在地址集合将存储在单个字段中
推荐阅读
- swift - 从情节提要更改文本后,Xcode 不更新 Main.string
- javascript - 尝试使用 ASPX 项目从 C# 调用 javascript
- python - C 和 Python 的按位 NOT 运算符是否不同?
- tree - 查找树 LISP 的总叶子数
- ios - 瀑布/交错/砌体布局 Xamarin
- apache-spark - 在连接中广播左表
- python - 如何使用漂亮的汤仅从输入中获取值
- html - 颜色应保持白色,但悬停时变为黑色,而应保持白色
- cmake - 尝试包含 main 时,ESP-IDF 在示例项目(闪烁)期间使 cMake 失败
- powerbi - 动态加权平均?