我有两个Models
逻辑在这里一个帖子可以有多个类别。
public class Post
{
public Post()
{
this.Categories = new HashSet<Category>();
}
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string ShortDescription { get; set; }
public string PostImage { get; set; }
public string Thumbnail { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime? PublishedDate { get; set; }
public string CreatedBy { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
我有三个静态类别。
当我尝试添加新帖子时,多路复用CategoryTable
创建具有相同名称的新类别,并将其映射到CategoryPostsTable
。
问题在于我想将该数据与现有类别进行映射。我不想添加同名的新类别。
我正在使用Repository Pattern我应该如何控制它? EF有解决方案吗?
答案 0 :(得分:0)
我假设您有以下代码:
var post = new Post();
post.Categories.Add(cat);
context.Posts.Add(post);
...其中cat
是表示现有类别的Category
对象。
后一种Add
方法(DbSet.Add
)并不仅仅将收到的实体标记为Added
,而是将其对象图中的所有实体标记为未附加到上下文。因此,如果cat
尚未附加,Added
也会被标记为context.Entry(cat).State = System.Data.Entity.EntityState.Unchanged;
。
你能做的是
FragmentTransaction
现在EF只会创建与该类别的关联,但不会插入新类别。