gpt4 book ai didi

asp.net-mvc - 流畅的 API 和数据注释

转载 作者:行者123 更新时间:2023-12-04 05:39:19 27 4
gpt4 key购买 nike

DataAnnotations 和 Fluent API 方法做同样的事情吗?

例如,.HasRequired == [Required] 吗?

.HasKey == [键]?

如果我不希望我的表 pk 字段生成为 ClassNameClassNameID,如果我为我的 pk 属性使用 ClassNameID 格式,我必须用 [Key] 标记类键或使用 .HasKey 吗?

我可以使用 DataAnnotations 和 Fluent API 的组合吗?或者,是其中之一?

我是否必须为所涉及的两个类映射 M:M 关系,即

public class Foo
{
public ICollection<Bar> Bars
}

public class Bar
{
public ICollection<Bar> Foos
}

public class Context : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>()
.HasMany(f => f.Bars).WithMany(b => b.Foos)
.Map(t =>
{
t.MapLeftKey("FooID");
t.MapRightKey("BarId");
t.ToTable("FooBar");
});

modelBuilder.Entity<Bar>()
.HasMany(b => b.Foos).WithMany(f => f.Bars)
.Map(t =>
{
t.MapLeftKey("FooID");
t.MapRightKey("BarId");
t.ToTable("FooBar");
});
}

谢谢。

最佳答案

Can I use a combonation of DataAnnotations and Fluent API; or, is it one or the other?



是的,您可以使用组合。但是,通常最好选择其中之一。我更喜欢 fluent,因为它可以将某些持久性问题排除在实体类之外。

Do DataAnnotations do the same thing as Fluent API methods?

For example, does .HasRequired == [Required]?

.HasKey == [Key]?



是的。此外,.IsRequired == [必需]

Must I map M:M relationships for both classes involved



不,您只需要映射关系的一侧。您可以映射双方,但如果更改关系,则需要修改两组代码。此外,当您映射双方时,两个映射必须解析为相同的结果(即数据库中的相同外键声明)。

Must I mark class key with [Key] or use .HasKey if I do not want my table pk field generated as ClassNameClassNameID if I am using ClassNameID format for my pk property?



是的,除非您的属性名称是 Id 或 PersonId/ProductId/OrderId/WhateverEntityNameId。按照惯例,EF 会猜测这些是您的关键属性。然而它 从不伤害通过在您的模型构建器上调用 .HasKey 来明确这一点。

关于asp.net-mvc - 流畅的 API 和数据注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476984/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com