#c# #entity-framework #code-first
#c# #entity-framework #сначала код
Вопрос:
У меня есть модель с составным ключом и составной внешний ключ. Возможно ли передать константу в аннотацию внешнего ключа, а не в имя столбца?
Текущая модель:
[Table("PBDS.INTERACTIONS")]
public partial class Interaction
{
// NOTE: The primary key for the INTERACTIONS table is a composite key
// consisting of:
// - ACCOUNT_ID
// - CONTACT_DATE
// - CONTACT_SEQ
// - PAGE
[Key]
[Column("ACCOUNT_ID", Order = 0)]
public int ACCOUNT_ID { get; set; }
[Key]
[Column("CONTACT_DATE", Order = 1)]
public DateTime CONTACT_DATE { get; set; }
[Key]
[Column("CONTACT_SEQ", Order = 2)]
public int CONTACT_SEQ { get; set; }
[Key]
[Column("PAGE", Order = 3)]
public int PAGE { get; set; }
[ForeignKey("ACCOUNT_ID,CONTACT_DATE,CONTACT_SEQ,PAGE,DATA_VALUE")]
public InteractionData InteractionData { get; set; }
}
DATA_VALUE всегда будет константой для моих целей. В идеале, я бы надеялся, что у меня может быть настройка внешнего ключа, подобная этой:
Желаемая модель:
[Table("PBDS.INTERACTIONS")]
public partial class Interaction
{
// NOTE: The primary key for the INTERACTIONS table is a composite key
// consisting of:
// - ACCOUNT_ID
// - CONTACT_DATE
// - CONTACT_SEQ
// - PAGE
[Key]
[Column("ACCOUNT_ID", Order = 0)]
public int ACCOUNT_ID { get; set; }
[Key]
[Column("CONTACT_DATE", Order = 1)]
public DateTime CONTACT_DATE { get; set; }
[Key]
[Column("CONTACT_SEQ", Order = 2)]
public int CONTACT_SEQ { get; set; }
[Key]
[Column("PAGE", Order = 3)]
public int PAGE { get; set; }
[ForeignKey("ACCOUNT_ID,CONTACT_DATE,CONTACT_SEQ,PAGE,<Net_Cost_Constant_String>")]
public InteractionData NetCost { get; set; }
[ForeignKey("ACCOUNT_ID,CONTACT_DATE,CONTACT_SEQ,PAGE,<Airing_Phone_Constant_String>")]
public InteractionData AiringPhone { get; set; }
[ForeignKey("ACCOUNT_ID,CONTACT_DATE,CONTACT_SEQ,PAGE,<RepFirm_Constant_String>")]
public InteractionData RepFirm { get; set; }
[ForeignKey("ACCOUNT_ID,CONTACT_DATE,CONTACT_SEQ,PAGE,<Week_Day_Constant_String>")]
public InteractionData WeekDay { get; set; }
}
Обратите внимание, что в DATA_VALUE есть 130 уникальных значений, но я хочу, чтобы здесь были перечислены только 4.
Возможно ли это? Альтернативные методы также приветствуются.
Комментарии:
1. Поскольку вы не упоминаете свой ORM, я предполагаю, что вы используете EF. Пожалуйста, отредактируйте вопрос, если я ошибаюсь.
2. «DATA_VALUE всегда будет константой для моих целей». Зачем вам нужна связь внешнего ключа с таблицей, где когда-либо используется только одна строка?
3. @CamiloTerevinto Мой вопрос направлен на аннотацию ForeignKey, которая имеет структуру параметров, отличную от вашего предлагаемого дубликата. Мне это не кажется дубликатом, и ответы на этот вопрос мне не помогают.
4. @CamiloTerevinto Я согласен, что это странно, но мне нужно сохранить атрибут Table для согласованности кода, и у меня нет доступа к DATA_VALUE в моем классе взаимодействий. Это не позволяет вам объявлять переменные, если они не соответствуют столбцу в таблице. Вероятно, это лучший способ справиться с этим. Если это так, я открыт для предложений.
5. @jpaugh Технически это была бы константа 4 отдельных раза с 4 разными константами. У меня нет доступа к DATA_VALUE из моего класса взаимодействий (или любой другой таблицы в базе данных, если на то пошло), но мне нужно использовать его как часть составного ключа для получения отдельных записей из другой таблицы.