2011-04-13 78 views
0

这里是一个interresting问题,我们有2类(注意,这些都是无稽之谈澄清我的问题)现在,在EF 4.1使用代码首先EF 4.1代码第一个SQL CE外键没有导航性能

class Foo 
{ 
    public int Id { get; set; } 
} 

class Bar 
{ 
    public int Id { get; set;} 
    public int FooId { get;set;} 
} 

,我想要以下内容:Foo有0个或更多带级联删除的酒吧。这很容易通过在模型中创建实际属性来实现(Bar在foo中的集合),但这些模型也是DTO的,因此不能对它们进行额外的属性(例如,如果您想为给定的Foo使用所有的Bar,则需要在特定查询中询问服务)。

有什么办法可以做到这一点?目前我有一个Foo和Bar专用于EF的副本,其中我的存储库在副本和实际DTO之间进行转换。

我希望有更好的方法,如果是的话,请教我。

谢谢!

回答

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应该采用额外的属性没有问题。