我有以下类:
public class Foo
{
public int Id { get; set; }
...
public Boo Boo1 { get; set; }
public Boo Boo2 { get; set; }
}我想排除Boo1和Boo2属性,但我不想用PetaPoco.Ignore属性修饰这些属性。我想拥有纯POCO对象。我可以在代码中执行Ignore命令吗?还是必须创建查询/存储过程并手动映射所有字段?
任何帮助都将不胜感激!
发布于 2012-03-13 00:05:55
看起来除了使用属性之外,不能以任何其他方式告诉PetaPoco字段/属性应该被忽略。您可以忽略少数成员,或者如果您没有映射大多数类,那么您可以为该类指定显式列映射,并修饰您确实希望映射的那些成员。我理解您在“纯粹的”POCO中添加特定于ORM的cruft的犹豫,但不幸的是,这些信息必须在某个地方,并且由于PetaPoco不使用映射文件(或者实际上根本不使用很多配置),所以类就是它的去处。
您唯一可以做的就是创建一个DTO/DAO,然后创建隐式或显式操作符,以便在域类和它的DTO之间进行转换。因此,DTO可以简单地不包含您不想包括的字段。这保持了两个类的POCO (取决于您对操作符方法的感受),而且它只添加了一个相对简单的步骤,即将查询结果强制转换为您的域类。
发布于 2012-03-13 20:17:42
在我的分支中:https://github.com/schotime/PetaPoco
您可以像我在这里描述的那样流利地描述您的模型:http://schotime.net/blog/index.php/2011/05/16/fluent-petapoco-external-mappings/,也可以使用如下所示的基于约定的映射:http://schotime.net/blog/index.php/2012/02/13/petapoco-convention-based-fluent-mapping/
发布于 2012-04-05 07:17:40
这是一个很好的匿名类型的地方。
在保存foo的方法中
public void InsertFoo(Foo f)
{
var db = new Database("connection");
var petaPocoFooObj = new {f.Id}
db.Insert("FooTable", "FooId", petaPocoFooObj);
}这只是多一点的工作,尽管如果你的类是深度嵌套的,那么它可能是一个皮塔。
https://stackoverflow.com/questions/9670142
复制相似问题