0
我有兩個實體一個或零一對多關係的WebAPI
主題
public class Subject
{
public int SubjectId { get; set; }
public virtual ICollection<Tag> Tags{ get; set; }
}
標籤
public class Tag
{
public int TagId { get; set; }
public string Name { get; set; }
}
這兩個機構有一個或零到一對多的關係。 我定義爲
modelBuilder.Entity<Subject>().HasMany(p => p.Tags)
.WithMany().Map(x =>
{
x.MapLeftKey("SubjectId");
x.MapRightKey("TagId");
x.ToTable("Subject_Tag");
});
首先我創建標籤兩個實體之間的關係,但是當我編輯主題添加標籤,數據庫創建另一個標籤和鏈接到它,這意味着它會創建具有相同名稱的重複標記。 什麼問題?
我的編輯器(我用的UnitOfWork庫)
[ModelValidator]
public IHttpActionResult Put(SubjectFullDto dto)
{
try
{
SubjectExists();
var subjectEntity = ModelFactory.GetSubject(dto);
var subject = UnitOfWork.SubjectRepository.Update(subjectEntity);
var model = ModelFactory.GetLigthSubject(subject);
return Ok(model);
}
catch (Exception ex)
{
#if DEBUG
return InternalServerError(ex);
#endif
return InternalServerError();
}
}
和模態廠:
public Subject GetSubject(SubjectFullDto obj)
{
var alltags = _unitOfWork.SubjectTagRepository.Get();
var org_tags = new HashSet<int>(org_subject.Tags.Select(c => c.ID));
var new_tag = new HashSet<int>(obj.Tags.Select(c => c.Uid));
foreach (var item in alltags)
{
if (new_tag.Contains(item.ID))
{
if (!org_tags.Contains(item.ID))
{
org_subject.Tags.Add(item);
}
}
else
{
if (org_tags.Contains(item.ID))
{
org_subject.Tags.Remove(item);
}
}
}
}
InnerException = {「不能在具有唯一索引'NameIndex'的對象'dbo.Tag'中插入重複鍵行。 「} –
我設置標記名爲[Index(」NameIndex「,IsUnique = true)] public String Name {get; set;} –