[英]Entity Framework how do I INSERT unique value on many to many relationship without having to do manual check
有谁知道如何插入唯一值而无需显式检查现有值?
我能够做到这一点,但是我对必须编写的代码印象深刻。 基本上,我创建了一个辅助函数来检查容器上的唯一值。
该结构非常基本。
[条目] * <-----> * [UniqueValue]
主要代号
public static void ImportStuff ()
{
//Generate a list of importable items
List<DtoItems> items = DtoItemGetter.GetItems();
using( var container = new MyEntities() )
{
foreach( var item in items )
{
Entry newEntry = CreateNewEntry( item );
//********
// Here's the call to my helper method to check
// for the uniqueness of the values on the item I am importing
//********
item.UniqueValuesList.ForEach(
uv => HelperMethod( container, newEntry, uv ) );
containter.AddToEntries( newEntry );
//Less important... but it would be nice if I didn't
// have to save everytime I add an new entry... but
// this necessary for the Helper check.
container.SaveChanges();
}
}
}
辅助方法
public static void HelperMethod(
MyEntities container, Entry newEntry, string checkValue )
{
UniqueItem unique = null;
//Have to check to see if it already exists in the DB
container.uniqueItems.ForEach( uv => {
if( uv.Name == checkValue )
{
unique = uv;
} } );
//Here's the money, either add the one I found, or
//create a new one... meh
newEntry.UniqueItems.Add(
unique ?? new UniqueItem { Name = checkValue } );
}
希望这有足够的道理。
实体框架尚不支持唯一约束-http: //blogs.msdn.com/b/efdesign/archive/2011/03/09/unique-constraints-in-the-entity-framework.aspx
因此,如果要使用唯一约束,则应在数据库上手动设置约束并手动检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.