请考虑以下表格(Visual Studio中dbml文件编辑器的屏幕截图):
http://roosteronacid.com/dbml.png
IngredientsRecipesRelation 表是一个多对多表,将 n 成分链接到单个配方。
你将如何插入以下食谱...:
Recipe { Name = "Dough" }
使用以下成分......:
Ingredient { Name = "water", Unit = "cups", Amount = 2.0 },
Ingredient { Name = "flour", Unit = "cups", Amount = 6.0 },
Ingredient { Name = "salt", Unit = "teaspoon", Amount = 2.0 }
...进入数据库?
答案 0 :(得分:1)
创建配方和配料,然后为每种配料创建与配料相关的关系。将这些关系中的每一个添加到配方中,并将配方插入数据库中。
var recipe = new Recipe { Name = "Dough" };
var ingredients = new []
{
new Ingredient { Name = "water", Unit = "cups", Amount = 2.0 },
new Ingredient { Name = "flour", Unit = "cups", Amount = 6.0 },
new Ingredient { Name = "salt", Unit = "teaspoon", Amount = 2.0 }
};
foreach (var ingredient in ingredients)
{
var relation = new IngredientsRecipesRelations();
relation.Ingredient = ingredient;
recipe.IngredientsRecipesRelations.Add(relation);
}
DataContext.Recipes.InsertOnSubmit(recipe);
DataContext.SubmitChanges();
请注意,您可以使用方法添加部分类实现,以便从使用它的类中隐藏此行为。您希望在内部作用域关联,然后公开一些公共方法来添加/删除与内部关联一起使用的成分,如上所述。
答案 1 :(得分:0)
azamsharp是正确的,因为它不支持多对多,但是这个link在某种程度上表明它是如何完成的,基本上你将手工制作一些代码