EF4 CTP5 - 在没有对象引用的情况下映射外键?

发布于 2024-10-20 08:58:06 字数 384 浏览 6 评论 0原文

我觉得这应该有一个简单的答案,但我找不到。

我有 2 个 POCO:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public int CategoryId { get; set; }
}

请注意,两个 POCO 上都没有对象引用。使用 Code-First,如何让 EF4 CTP5 定义两个数据库表之间的关系?

(我知道这是一个不寻常的场景,但我正在探索代码优先的可能性和不可能性)

I feel like this should have a simple answer, but I can't find it.

I have 2 POCOs:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public int CategoryId { get; set; }
}

Notice that there are no object references on either POCO. With Code-First, how do I make EF4 CTP5 define a relationship between the two database tables?

(I know this is an unusual scenario, but I am exploring what's possible and what's not with Code-First)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丢了幸福的猪 2024-10-27 08:58:06

不,这是不可能的。如下所示,所有用于设置关联的流畅 API 方法都需要指定 Navigation Property 作为其参数。

HasMany<TTargetEntity>(Expression<Func<TEntityType, ICollection<TTargetEntity>>> navigationPropertyExpression) 

HasOptional<TTargetEntity>(Expression<Func<TEntityType, TTargetEntity>> navigationPropertyExpression) 

HasRequired<TTargetEntity>(Expression<Func<TEntityType, TTargetEntity>> navigationPropertyExpression) 

No, this is not possible. As you can see below, all of the fluent API methods for setting up associations require specifying the Navigation Property as their parameter.

HasMany<TTargetEntity>(Expression<Func<TEntityType, ICollection<TTargetEntity>>> navigationPropertyExpression) 

HasOptional<TTargetEntity>(Expression<Func<TEntityType, TTargetEntity>> navigationPropertyExpression) 

HasRequired<TTargetEntity>(Expression<Func<TEntityType, TTargetEntity>> navigationPropertyExpression) 
怪异←思 2024-10-27 08:58:06

您不想使用对象引用有什么特殊原因吗?使用它们看起来非常优雅:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Product> Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public Category Category { get; set; }
}

您仍然可以通过您的产品以 product.Category.Id 的形式访问类别 Id。

Is there any particular reason you don't want to use object references? It looks very elegant to use them:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Product> Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public Category Category { get; set; }
}

And you can still access the Category Id via your product as product.Category.Id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文