我知道我可以使用纯粹的 dapper 来构建我的更新字符串,其中只有我想要更新的属性(白名单)。
我想要的是保持 dapper 扩展的 ORM 风格:
con.Update<Person>(person);
我希望人的某些属性不被更新(黑名单)
如何排除运行 .Update 扩展方法更新的属性?
你可能知道一个更好的 .Update 扩展名的 dapper 风格吗? (那我就不用
写下来 ;-)
最佳答案
只需定义一个 PersonMapper
继承自 ClassMapper<Person>
并使用 Ignore()
映射要排除的列。
请参见下面的示例(来源:github tests for Dapper Extensions),其中 Phones
属性 ( IEnumerable<Phone> Phones
) 被排除在外。
using System;
using System.Collections.Generic;
using DapperExtensions.Mapper;
namespace DapperExtensions.Test.Data
{
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateCreated { get; set; }
public bool Active { get; set; }
public IEnumerable<Phone> Phones { get; private set; }
}
public class Phone
{
public int Id { get; set; }
public string Value { get; set; }
}
public class PersonMapper : ClassMapper<Person>
{
public PersonMapper()
{
Table("Person");
Map(m => m.Phones).Ignore();
AutoMap();
}
}
}
关于dapper - 不要使用 dapper 扩展更新 Update 方法上的某个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823010/