我正在尝试在两个实体之间建立实体关系,但是获得内部异常:
第一个实体:
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; }
}