本文介绍了实体框架-使用多列索引作为标识符的种子AddOrUpdate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用 context.AddOrUpdate
方法为数据库添加种子,但是问题是我需要基于多列索引使插入的数据唯一。
I am trying to seed a database using the context.AddOrUpdate
method, but the problem is that I need to make the inserted data unique based on a multi column index.
[Table("climbing_grades")]
public class ClimbingGrade : EntityBase
{
/// <summary>
/// The name of the climbing grade, e.g.: 7a, VII, etc.
/// </summary>
[Index("IX_Name_GradeType", 1, IsUnique = true)]
public string Name { get; set; }
/// <summary>
/// Tries to display the average difficulty of the described grade.
/// Matching the different grades can be difficult because its always
/// a subjective rating and there exists no norm on converting grades.
/// </summary>
public double Difficulty { get; set; }
/// <summary>
/// The type of the grade. Will be the respective region rating.
/// e.g.: UUIA for most oft europe, YSD for USA, etc.
/// </summary>
[Index("IX_Name_GradeType", 2, IsUnique = true)]
public ClimbingGradeType GradeType { get; set; }
}
当前我 AddOrUpdate
基于攀登成绩的名称
,但现在我需要插入重复的名称。
Currently I AddOrUpdate
based on the Name
of the climbing grade, but now I am at a point where I need to insert duplicate names.
context.ClimbingGrades.AddOrUpdate(grade => /* Compare multi column index here?*/,
new ClimbingGrade
{
Name = "5a",
Difficulty = 4.75,
GradeType = ClimbingGradeType.FontainebleauBloc
},
new ClimbingGrade
{
Name = "5a",
Difficulty = 4.25,
GradeType = ClimbingGradeType.FontainebleauTraverse
});
插入种子数据时是否可以比较多列索引?
Is it possible to compare multi column indexes when I insert seed data?
推荐答案
您需要使用匿名类型来指定多个列。
You need to use anonymous type for specifying multiple columns. This also works without specifying the indicies.
context.ClimbingGrades.AddOrUpdate(grade => new { grade.Name, grade.GradeType },
new ClimbingGrade
{
Name = "5a",
Difficulty = 4.75,
GradeType = ClimbingGradeType.FontainebleauBloc
},
new ClimbingGrade
{
Name = "5a",
Difficulty = 4.25,
GradeType = ClimbingGradeType.FontainebleauTraverse
});
这篇关于实体框架-使用多列索引作为标识符的种子AddOrUpdate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!