0

我是EF新手,有几个问题要问:

1. 我不明白虚拟在例如一对多中是什么意思,我举个例子:一个问题可以有很多选项,例如

public class Question
{
    public int QuestionId { get; set; }
    public string Title { get; set; }
    public virtual List<Option> Options { get; set; }
}

public class Option
{
    public int OptionId { get; set; }
    public string OptionText { get; set; }
    public virtual Question Question { get; set; }
}

但是“2”虚拟是什么意思,因为如果我删除virtual这一行中的: public virtual List<Option> Options { get; set; },我没有发现任何差异,它可以作为一对多使用,所以你能非常清楚和容易地解释我 2 的virtual意思吗?如果是覆盖,覆盖什么?

2. 我不知道我们什么时候应该使用API​​ fluent,例如前面的一对多ex。没有 api fluent,它仍然是一对多的关系,所以请告诉我什么时候应该使用它?例如在哪些场合。

3. 在API fluent中,我知道“withmany”和“hasmany”在一起,它们的意思是“many to many”,什么是“withrequired?isoptional?”

4

1 回答 1

0

我想我可以回答以下几点:

  1. EF 定义所有虚拟导航属性,以便 EF 将在运行时创建一个从您的 Brand 类派生的新类(动态代理)并改用它。这个新的动态创建的类包含在第一次访问时加载导航属性的逻辑。此功能称为延迟加载(或更好的透明延迟加载)。

有关更多详细信息,请参阅以下链接

Entity Framework 4.1 虚拟属性

2.什么时候使用fluent API

使用 Code First 时,您可以通过定义域 CLR 类来定义模型。默认情况下,实体框架使用 Code First 约定将您的类映射到数据库模式。如果您使用 Code First 命名约定,在大多数情况下,您可以依靠 Code First 根据您在类上定义的外键和导航属性来设置表之间的关系。如果您在定义类时不遵循约定,或者如果您想更改约定的工作方式,您可以使用 fluent API 或数据注释来配置您的类,以便 Code First 可以映射表之间的关系。

http://msdn.microsoft.com/en-us/data/jj591620.aspx

3.查看以下链接了解什么是 .WithRequired 和 .WithOptional 选项

.WithRequired 在 EF Fluent API 中起什么作用?

于 2013-05-29T10:24:51.530 回答