use*_*627 6 entity-framework ef-code-first entity-framework-4.1 entity-framework-5
我看到很多关于首先使用EF代码的示例,其中POCO显示如下:
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,看看Blog房产.不应该是这样的:
private Blog blog;
public virtual Blog Blog
{
get
{
return blog;
}
set
{
blog = value;
if (blog != null)
{
BlogId = blog.BlogId;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,既然你已经用外键"污染"了你的模型,你不应该至少让它与参考同步吗?或者你不应该依赖于BlogId阅读数据(例如,你想知道特定BlogId列表是否在列表中).或者也许有一个神奇的属性DbContext(像KeepForeingKeysPropertiesSyncronizedWithReferences)对我这样做,我是唯一一个担心这个的悲伤程序员?还是我偏执狂?(也很抱歉我的英语不好)
编辑
很抱歉 - 这真的是一个愚蠢的问题.Stefan是对的,EF真的为你做到了这一点.我没有看到这个,因为我传递的引用被加载了AsNoTracking().只有在这种情况下,你才会有一个带ID的引用,而foreing key字段将为0.只要你传递一个已经在上下文中的引用,它就应该有效.
您本身不需要执行此操作,EF 会为您执行此操作。
如果您设置独立关联属性,EF 将同步外键属性以反映您的更改,反之亦然。请注意,它不会立即自动发生,我认为这会在调用 SaveChanges 后发生,但我不确定。
如果您想知道为什么有些人使用外键属性:它在独立的应用程序(如网络应用程序)中更方便。当您需要扩展应用程序时,它还可以帮助提高性能(请在最近的 MS 博客文章中阅读此内容)。
基本上,如果您要混合和匹配,您只需要自己执行此操作;当在一种方法中您使用独立关联属性而在另一种方法中您使用外键属性时。
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |