这是一个有趣的问题,我们有2个班级(请注意,这些只是为了澄清我的问题而无意义)
class Foo
{
public int Id { get; set; }
}
class Bar
{
public int Id { get; set;}
public int FooId { get;set;}
}
现在在EF 4.1中使用Code First,我想要以下内容:Foo有0个或更多个Bar,启用了级联删除。这很容易通过在模型中创建实际属性(foo中的Bar集合)来实现,但模型也是DTO,因此无法对它们进行额外的属性(例如,如果你想要给定Foo的所有Bar,你需要在特定查询中询问服务。)
有没有办法实现这个目标?目前我有一个特殊的Foo和Bar复制品,我的存储库在副本和实际的DTO之间进行转换。
我希望有更好的方法,如果是的话,请教我。
谢谢!
答案 0 :(得分:0)
作为described here,如果要使用代码优先方法创建FK实现,则至少需要在一侧使用导航属性。如果您的类是DTO,则可以使用属性进行标记以进行序列化。例如,将WCF与DataContractSerializer
一起使用时,您可以使用:
public class Bar
{
public int Id { get; set; }
public int FooId { get; set; }
[IgnoreDataMember]
public Foo Foo { get; set; }
}
如果您使用实体作为DTO,则使用其他属性应该没有问题。