我有这个数据库结构:
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>
我的数据库上下文扩展了DBContext并具有以下方法:
public new IDbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity
{
return base.Set<TEntity>();
}
更新2
DbSet
的{{1}}始终保留0并且永远不会增加,但CompanyUser
和Company
User
正在增加。调用DbSet
答案 0 :(得分:1)
检查对象模型是否正在生成使用主键/外键正确关联的表,然后尝试以下方法:
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();