我有这个数据库结构:
User
Company
CompanyUser
CompanyUser具有
UserId
和CompanyId
列以及一个布尔值。用户实体具有以下导航项:
ICollection<CompanyUser> Companies
公司有一个导航项目:
ICollection<CompanyUser> Users
CompanyUser看起来像这样:
public class CompanyUser : BaseEntity
{
/// <summary>
/// Gets or sets if the user is an admin
/// </summary>
public bool IsAdmin { get; set; }
/// <summary>
/// gets or sets the company id
/// </summary>
public Guid? CompanyId { get; set; }
/// <summary>
/// gets or set the user id
/// </summary>
public Guid? UserId { get; set; }
public User User { get; set; }
public Company Company { get; set; }
}
我可以创建一个
User
和Company
实体,并将它们插入数据库中。但是,当我像这样创建CompanyUser
时,它根本不会插入。User user = new User();
// Set properties
_userService.InsertUser(user);
Company company = _companyService.GetCompanyById(i);
CompanyUser companyUser = new CompanyUser()
{
IsAdmin = true,
CompanyId = company.Id,
UserId = user.Id
};
_companyService.InsertCompanyUser(companyUser);
我不明白为什么不插入。我已经调试了它,没有抛出任何未知的异常。当我查看companyUser包含的内容时,它看起来非常完美。
SaveChanges()
每次更改0
都会返回CompanyUser
,并且Entities'
计数始终为0
在过去的几个小时中,这个实体框架一直困扰着我,我似乎无法弄清楚这一点。我究竟做错了什么?
更新
这是
InsertCompanyUser
try
{
if (entity == null)
throw new ArgumentNullException("entity");
this.Entities.Add(entity);
this._context.SaveChanges();
}
this.Entities
是IDbSet<T>
我的数据库上下文扩展了数据库上下文,并具有以下方法:
public new IDbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity
{
return base.Set<TEntity>();
}
更新2
DbSet
的CompanyUser
始终保持计数0,并且从不增加,但是Company
和User
DbSet
随其应有的增加。为什么在调用Add
时DbSet不会增加 最佳答案
检查您的对象模型正在使用主键/外键生成与表正确相关的表,然后尝试以下方法:
User user = new User();
// Set properties
Company company = _context.Companies.Find(i);
CompanyUser companyUser = new CompanyUser()
{
IsAdmin = true,
User = user
};
company.Users.Add(companyUser);
_context.SaveChanges();
关于c# - Entity Framework saveChanges不适用于某些实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24375255/