Entity Framework不同的外键数据类型

时间:2015-05-14 09:56:10

标签: c# entity-framework foreign-keys type-conversion

我正在使用Visual FoxPro数据库上的Entity Framework(我还没有听说过)。我在使用模型的数据注释创建关系时遇到了问题。

我简化了课程:

public class Country
{
    [Key]
    public int Sid { get; set; }

    [ForeignKey("ObjectId")]
    public virtual ICollection<Heading> Headings { get; set; }

    ...
}

public class Heading
{
    [Key]
    public int Id { get; set; }

    public string ObjectId { get; set; }
}

关系:一个国家有很多标题。 (一对多)

请注意,Country的ID为intObjectId上的Heading(外键)是string

我收到以下例外:

  

在模型生成期间检测到一个或多个验证错误:

     

Country_Headings_Source_Country_Headings_Target ::所有类型   参照约束的从属角色中的属性必须是   与主体角色中的相应属性类型相同。   物业的类型&#39; Headingid&#39;实体&#39;标题&#39;不匹配   财产的类型&#39; Sid&#39;实体&#39;国家&#39;在参考   约束&#39; Country_Headings&#39;。

问题是数据类型不同。我有什么方法可以建立这种关系吗?

感谢。

1 个答案:

答案 0 :(得分:1)

修改的 这曾经用于枚举,可以用这个吗?

public class Country
{
    [Key]
    public int Sid { get; set; }

    [ForeignKey("ObjectIdInt")]
    public virtual ICollection<Heading> Headings { get; set; }

    ...
}

public class Heading
{
    [Key]
    public int Id { get; set; }

    public string ObjectId { get; set; }

    public int ObjectIdInt 
    {
        get { return int.Parse(ObjectId); }
        set { ObjectId = value.ToString() }
    }
}