实体框架许多人节省创建现有实体

时间:2014-04-28 15:48:26

标签: asp.net-mvc-4 entity-framework-5 entity

我有两个具有多对多关系的课程。当我保存上下文时,Entity Framework不使用现有的ID,它会在我的数据库中创建新条目。

我的课程如下:Country和CountryGroup(在我的数据库EF中按预期创建CountryGroupCountries)。

public class Country : EntityBase
{
    public Country()
    {
        CountryGroups = new List<CountryGroup>();
    }


    public virtual List<CountryGroup> CountryGroups { get; set; }
}

public class CountryGroup : EntityBase
{
    public CountryGroup()
    {
        Countries = new List<Country>();
    }

    public virtual  List<Country> Countries { get; set; }
}

public abstract class EntityBase
{
    public EntityBase()
    {
        DateCreate = DateTime.Now;
        DateUpdate = DateTime.Now;
        DateDelete = DateTime.Now;
    }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Timestamp]
    public byte[] RowVersion { get; set; }

    [Required]
    public virtual String Name { get; set; }
}

我使用ASP MVC 4和Entity Framework 5.当我想保存CountryGroup时,我使用已经在我网站中的国家/地区。 Ids是正确的。

    public virtual void Save(TEntity entity)
    {
        EntityRepository.Insert(entity);
        Context.SaveChanges();
    }

我只想让EF保存我的对象以及与国家的关系,但不是。我有什么解决方案?我觉得我对EF管理多对多的方式有误解。

1 个答案:

答案 0 :(得分:0)

经过多次研究后,我相信我的问题在于模型绑定器。它必须只是创建对象而不从上下文中获取它们。我覆盖了我的保存方法,用来自上下文的新组件替换CountryGroup实体中的每个国家。这不是最优的,但我会研究模型绑定,然后我会在这些解决方案之间进行仲裁。