C# 如何在实体框架中使用自定义属性?

C# 如何在实体框架中使用自定义属性?,c#,entity-framework,data-access-layer,C#,Entity Framework,Data Access Layer,假设我有一个表单,用户可以通过几个下拉菜单设置自定义对象,然后保存该对象。我正在使用实体框架来处理DAL。例如,他们正在设置一个配置文件,必须选择一种喜爱的颜色,而我在下拉列表中有一些颜色。下拉列表是从颜色表填充的。如果我想添加“Other”作为选项,并允许用户键入值,该怎么办。当我保存对象时,我从下拉列表中获取颜色Id并将其保存到我的配置文件对象中,但是如果他们选择“其他”,我希望保存文本框的内容。有正常的处理方法吗?我不想在这里重新发明轮子 这就是我计划尝试的,我将配置文件的color id

假设我有一个表单,用户可以通过几个下拉菜单设置自定义对象,然后保存该对象。我正在使用实体框架来处理DAL。例如,他们正在设置一个配置文件,必须选择一种喜爱的颜色,而我在下拉列表中有一些颜色。下拉列表是从颜色表填充的。如果我想添加“Other”作为选项,并允许用户键入值,该怎么办。当我保存对象时,我从下拉列表中获取颜色Id并将其保存到我的配置文件对象中,但是如果他们选择“其他”,我希望保存文本框的内容。有正常的处理方法吗?我不想在这里重新发明轮子


这就是我计划尝试的,我将配置文件的color id属性设置为0,1关系,因此它不是必需的,然后我将添加一个部分配置文件类,其中包含颜色名称的getter/setter,在getter中,如果颜色对象不是null,我将返回颜色的名称,如果它是null,我将返回我的自定义属性值。

您描述的设计将创建引用完整性问题。您正在尝试创建一个字段,该字段是颜色表的外键,如果不可能,外键应指向另一个表


更好的设计是让用户从下拉列表中选择颜色,如果颜色不可用,您可以通过某种对话框向用户提供将新颜色添加到颜色表的方法。然后,他们添加的颜色将在下拉列表中选择。

您想将文本框的内容保存在哪里?我正在考虑一个自定义对象来存储属性名称、属性值和标识符,如果我理解正确,它将是配置文件IDI,你想在你的数据对象中创建一个自定义属性,而不是指向EF它与数据库有关系?我想你明白我在做什么,基本上如果他们从可用的颜色中选择,那么配置文件实体将与他们选择的颜色id链接,如果他们选择其他,我会将颜色id设置为零,并从我的自定义属性表中提取颜色名称。自定义属性表是指数据库中有另一个“Other”的表,而ColorId为0,并且您想将该表拉入/设置?我不希望它指向另一个表,我会在我的分部类上使用扩展方法来处理它。我不认为添加颜色对我的场景来说太好,因为我希望他们选择添加的项目只有一次,下次不可选择。