我有以下课程:
public class Foo
{
public int Id { get; set; }
...
public Boo Boo1 { get; set; }
public Boo Boo2 { get; set; }
}
我想排除Boo1
和Boo2
属性,但我不想用PetaPoco.Ignore
属性修饰这些属性。我想拥有纯粹的POCO对象。我可以在代码中执行Ignore
命令,还是必须创建查询/存储过程并手动映射所有字段?
非常感谢任何帮助!
答案 0 :(得分:1)
看起来不能以任何其他方式告诉PetaPoco应该忽略字段/属性而不是使用属性。您可以忽略一些成员,或者如果您没有映射类的大部分,那么您可以为类指定显式列映射并装饰您想要映射的那些。我理解你对“纯粹”POCO添加特定于ORM的瑕疵的犹豫不决,但不幸的是,信息必须在某处,而且由于PetaPoco不使用映射文件(或者根本不是配置文件),所以它去哪里。
你唯一能做的就是创建一个DTO / DAO,它将被映射,然后创建隐式或显式运算符,以在域类和它的DTO之间进行转换。然后,DTO可能根本没有您不想包含的字段。这保留了两个类POCO(取决于您对运算符方法的感受),它只是添加了一个相对简单的步骤,将查询结果强制转换为您的域类。
答案 1 :(得分:0)
这是一个匿名类型的好地方。
在保存foo的方法中
public void InsertFoo(Foo f)
{
var db = new Database("connection");
var petaPocoFooObj = new {f.Id}
db.Insert("FooTable", "FooId", petaPocoFooObj);
}
这只是一点点工作,但如果你的课程被深深嵌套,它可能是一个PITA。