Eli*_*eth 21 dapper dapper-rainbow dapper-extensions
如何使用dapper/dapper extensions/dapper rainbow或any忽略模型上的属性
那些精致的图书馆?
Ben*_*ins 22
Dapper.Contrib内置支持将列标记为计算:添加ComputedAttribute以允许在Insert上支持计算列.以下是它的工作原理:
class MyModel
{
public string Property1 { get; set; }
[Computed]
public int ComputedProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Computed
插入时将忽略使用该属性标记的属性.
Shi*_*iva 10
小巧玲珑的创作者萨姆藏红花是应解决了这个要求,其他SO用户提出的问题在这里.看看这个.
此外,如果你想使用Sam在他的回答中提到的Dapper Extensions库,你可以从Github或Nuget获得它.
这是一个忽略图书馆测试项目属性的例子.
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我用过Dapper.Contrib
.在任何属性上
使用[Write(false)]
属性应该可以解决问题.有些人还建议使用[Computed]
属性.
public class Person
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
[Write(false)]
public IEnumerable<Email> Emails { get; }
}
Run Code Online (Sandbox Code Playgroud)
您可以设计一个没有计算属性的基类,并将其用于插入。
class BasePerson
{
public String Name {get;set;}
}
class Person: BasePerson
{
public String ComputedProperty {get;set;}
}
Insert<BasePerson>(person);
Run Code Online (Sandbox Code Playgroud)
对于那些不想包含 DapperExtensions 的人,也可以使用DatabaseGenerated
标准中的 DapperExtensions 。System.ComponentModel.DataAnnotations.Schema
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21181 次 |
最近记录: |