EF 4.1 Code First没有导航属性的Sql CE外键

时间:2011-04-13 18:35:48

标签: c# entity-framework entity-framework-4.1

这是一个有趣的问题,我们有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之间进行转换。

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

谢谢!

1 个答案:

答案 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,则使用其他属性应该没有问题。