refs:
http://dapper-tutorial.net/dapper-fastcrud
https://github.com/MoonStorm/Dapper.FastCRUD/wiki
部分更新
https://github.com/MoonStorm/Dapper.FastCRUD/wiki/Multiple-mappings
老是要去查表,主要对参数理解不够,故转此文。
//按主键查找
var invoice = connection.Get(new Invoice { Id = 1 });
//查找所有
var list = connection.Find<Invoice>();
//按条件查找
var target=connection.Find<Entity>(statement => statement
.Where($"{nameof(Entity.FirstName):C}=@FirstNameParam")
.OrderBy($"{nameof(Entity.LastName):C} DESC")
.Skip(10)
.Top(20)
.WithParameters(new {FirstNameParam = "John"});
connection.Insert<Invoice>(new Invoice { Kind = InvoiceKind.WebInvoice, Code = "Insert_Single_1" });
invoice.Code = "Updated_invoice";
invoice.Kind = InvoiceKind.WebInvoice;
var status = connection.Update<Invoice>(invoice);
var isDeleted = connection.Delete<Invoice>(new Invoice { Id = 2 });
var count = connection.Count<Invoice>();
注意:
1)用指令
dbConnection.Update(updatedEntity);
dbConnection.BulkUpdate(new Asset {IsLost = true}, statement => statement
.Where($"{nameof(Asset.Name):C}='Unknown'"));
更新时,更新的是所有字段,如updatedEntity,而Asset除了IsLost字段外他字段会被设置为null;如果只想更新目标字段,可以用如下方式:(见refs)
var partialUpdateMapping = OrmConfiguration
.GetDefaultEntityMapping<Business>()
.Clone()
.RemoveAllPropertiesExcluding(nameof(Business.Name));
如果是多个字段
var partialSetMapping = OrmConfiguration
.GetDefaultEntityMapping<CompanyInformation>()
.Clone() // clone it if you don't want to modify the default
.RemoveAllPropertiesExcluding(
nameof(CompanyInformation.Id),
nameof(CompanyInformation.Email),
nameof(CompanyInformation.Phone),
nameof(CompanyInformation.Name));
除了Name字段,其他的排除掉,更新时带上WithEntityMappingOverride参数。
databaseConnection.BulkUpdate(new Business { Name = newName}, statement => statement
.Where($"{nameof(Business.Name):C} LIKE '{keyword}%'")
// .WithParameters(new { keyword }) no need for this since it's not used
.WithEntityMappingOVerride(partialUpdateMapping));