我有这2个POCO ......
public class SqlTrace
{
public int id { get; set; }
public string Name { get; set; }
public virtual List<SqlTraceFile> TraceFiles { get; set; }
}
public class SqlTraceFile
{
public int id { get; set; }
public string Name { get; set; }
public virtual SqlTrace Trace { get; set; }
}
我在跟踪及其文件之间创建了一对多的关系。我想添加一个索引,使SqlTraceFiles对其SqlTrace是唯一的;允许多个SqlTraceFiles的名称相同,只要它们属于不同的SqlTrace。
以下是我在SqlTraceFileConfiguration中的内容:EntityTypeConfiguration&lt; SqlTraceFile&gt;
Property(TraceFile => TraceFile.Name)
.IsRequired()
.HasColumnAnnotation("Index", new IndexAnnotation(
new IndexAttribute("IX_SQLTracefile_FileTrace", 1) { IsUnique = true }
));
Property(TraceFile => TraceFile.Trace)
.HasColumnAnnotation("Index", new IndexAnnotation(
new IndexAttribute("IX_SQLTracefile_FileTrace", 1) { IsUnique = true }
));
我的问题是它没有采取&#39; tracefile =&gt; tracefile.trace&#39;我猜这个实体想要外键来代替跟踪文件。跟踪&#39;。为了实现这个目标,我必须遵循一种模式吗?或者解决我的职位。
答案 0 :(得分:1)
试试这个作为你的poco's:
public class SqlTrace
{
public int Id { get; set; }
//added indexes with annotations
[Index("otherNameIndex", IsUnique = true)]
public string Name { get; set; }
//changed to ICollection
public virtual ICollection<SqlTraceFile> TraceFiles { get; set; }
}
public class SqlTraceFile
{
public int Id { get; set; }
[Index("nameIndex", IsUnique = true)]
public string Name { get; set; }
//added the FK id property explicit and put an index on to it.
[Index("indexname", IsUnique = true)]
public int SqlTraceId {get;set;}
public virtual SqlTrace Trace { get; set; }
}
你不会以这种方式需要流畅的代码。