【发布时间】:2017-03-15 11:27:40
【问题描述】:
我正在使用 Dapper 处理 .NET 项目中的数据库连接。自动列映射效果很好,我还可以将列映射到模型中的不同属性名称。但是,如何映射计算属性?例如,我的模型是
class User
{
public int Id {get; set;}
public string Name {get; set;}
public bool IsPremiumUser {get; set;}
}
桌子是
Id | Name | CreationDate | IsPremiumUser
现在,IsPremiumUser 在 db 中可以为 null,但在模型中则不能。我希望它被以下逻辑映射:
if (row.IsPremiumUser != null)
{
model.IsPremiumUser = row.IsPremiumUser;
}
else
{
model.IsPremiumUser = row.CreationDate < 1.1.2000;
}
换句话说,它的值取决于 2 列。还有多种情况我想根据是否存在某种关系来设置布尔属性。如何处理这些更复杂的映射情况?
【问题讨论】:
-
当您尝试将项目保存回数据库时,此映射应如何工作?如果
IsPremiumUser为空(当你读到它时),它应该被更新并有一个值吗? -
也许你只需要额外的属性来计算但不会映射到数据库表?
-
是的,这正是我的意思。这些计算值不会保存回 db。