C#代码优先-如何创建唯一的外键

C#代码优先-如何创建唯一的外键,c#,entity-framework,ef-code-first,data-annotations,ef-fluent-api,C#,Entity Framework,Ef Code First,Data Annotations,Ef Fluent Api,我有一个模型,有两个外键(以及一个主键)。我想将两个fk一起设置为唯一(这意味着不能有两列同时具有相同的两个fk值) 我已经尝试了所有方法,但我一直得到:“类型'Model.MyType'必须是不可为null的值类型,才能将其用作参数'T'”。此错误在属性函数中: Property (o => o.MyType).HasColumnAnnotation (IndexAnnotation.AnnotationName, new IndexAnnotation (new IndexAttrib

我有一个模型,有两个外键(以及一个主键)。我想将两个fk一起设置为唯一(这意味着不能有两列同时具有相同的两个fk值)

我已经尝试了所有方法,但我一直得到:“类型'Model.MyType'必须是不可为null的值类型,才能将其用作参数'T'”。此错误在属性函数中:

Property (o => o.MyType).HasColumnAnnotation (IndexAnnotation.AnnotationName,
new IndexAnnotation (new IndexAttribute ("UX_MyConstraint", 1) {IsUnique = true}));
(另一个带2)

我更喜欢fluent api解决方案,但数据注释也很好

(C#实体框架6.1代码优先)


谢谢

如何声明MyType?As not nullable?作为数据库中的表的另一个类。关系是必需的,因此fk在DB中显示为必需的,但是MyType是引用类型,因此它是可空的。也许您可以发布更多的代码,这样事情就更清楚了。您还试图在此处创建唯一的索引,但索引用于保证行值的唯一性。如果希望列值是唯一的,则必须查看检查约束。