EF关系问题

时间:2015-08-24 10:49:44

标签: asp.net-mvc entity-framework

我正在尝试在两个实体之间建立实体关系,但是获得内部异常:

第一个实体:

public class DataSourceParam
{
    public int Id { get; set; }
    public int DataSourceId { get; set; }
    public string Name { get; set; }
    public int TypeId { get; set; }
    public int SelectOptionId { get; set; }

    public virtual DataSource DataSource { get; set; }
    public virtual ICollection<SelectOption> SelectOptions { get; set; }
}

第二实体:

public class SelectOption
{
    public int Id { get; set; }
    public int SelectOptionId { get; set; }
    public string Value { get; set; }

    public virtual DataSourceParam DataSourceParam { get; set; }
}

DataSourceParam可以包含选项列表(SelectOptionId),例如用户可以从选择列表中选择苹果或梨。

SelectOption可以由多个DataSourceParam使用。

我的关系出了什么问题?

错误讯息:

  

从'System.Data.Entity.DynamicProxies.DataSourceParam_3ED5235781E96F34FEE45416740C9F6A3E9CECC251B67E8CF8BF41B73359766D'''SelectOptions'获取值时出错。“

和内部异常:

  

无效的列名'DataSourceParam_Id'。\ r \ n无效的列名'DataSourceParam_Id'。\ r \ n无效的列名'DataSourceParam_Id'。

修改

SelectOption表:

Id SelectOptionId Value
1  5              Apple
2  5              Pear
3  5              Grapes
4  7              Monkey
5  7              Dog
6  7              Cat

对于屏幕上带有SelectOptionId 7的DataSourceParam,用户将显示带有动物列表的下拉框。我没有在任何地方录制它只会用作数据源的参数。

EDIT2

如果我这样做它可以正常工作,但我必须为每个新参数创建新的选项列表。不太优雅,如果可能的话,更愿意重复使用列表。

    public class DataSourceParam
{
    public int Id { get; set; }
    public int DataSourceId { get; set; }
    public string Name { get; set; }
    public int TypeId { get; set; }

    public virtual DataSource DataSource { get; set; }
    public virtual ICollection<SelectOption> SelectOptions { get; set; }
}

public class SelectOption
{
    public int Id { get; set; }
    public string Value { get; set; }
    public int DataSourceParamId { get; set; }
    public virtual DataSourceParam DataSourceParam { get; set; }
}

0 个答案:

没有答案