Мое определение таблицы POCO выглядит следующим образом, и, поскольку я хочу использовать его в качестве виртуальной сущности в Dynamics CE, он должен иметь возможность использовать $ expand на конечной точке OData в следующих коллекциях.
public partial class ak_iglead_V
{
[Key]
public Guid ak_igLeadId_V { get; set; } //the pk
....
public virtual ICollection<ak_Match> ak_MatchLead { get; set; }
}
public partial class ak_Match
{
[Key]
[Column(Order = 0)]
public Guid MatchId { get; set; }
public Guid ak_LeadId { get; set; } //Foreign key to
public Guid? ak_matchLeadId { get; set; } //forreign key to
public Guid? ak_matchContactId { get; set; }
public decimal? ak_Confidance { get; set; }
public string ak_Name { get; set; }
[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly"),ForeignKey("ak_LeadId")]
public virtual ak_iglead_V ak_iglead_V { get; set; }
[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly"),ForeignKey("ak_matchLeadId")]
public virtual ak_iglead_V ak_iglead_V_matched { get; set; }
}
Однако проблема возникает, когда я хочу вернуть объект в контроллер: SQL, сгенерированное из приведенного выше определения, выглядит следующим образом:
SELECT
1 AS [C1],
[m].[MatchId] AS [MatchId],
[m].[ak_LeadId] AS [ak_LeadId],
[m].[ak_matchLeadId] AS [ak_matchLeadId],
[m].[ak_matchContactId] AS [ak_matchContactId],
[m].[ak_Confidance] AS [ak_Confidance],
[m].[ak_Name] AS [ak_Name],
[m].[ak_iglead_V_ak_igLeadId_V] AS [ak_iglead_V_ak_igLeadId_V], --generates error column does not* exists
[m].[ak_iglead_V_ak_igLeadId_Vmatched] AS [ak_iglead_V_ak_igLeadId_Vmatched] --column does not exists
FROM [dbo].[ak_Match] AS [m]
Это фрагмент кода:
`public List<ak_Match> Matches { get; set; }
public void Initialize()
{
var matches = from m in db.akMatches
select m;
this.Matches= matches.ToList() ;
`
и сгенерировал исключение, потому что он не может найти столбцы, которые должны были быть коллекцией.
Разве это не может быть каким-то образом проигнорировано в SQL для коллекций или внешних ключей? Каким-то образом, потому что ключ одной и той же таблицы, я думаю, что она каким-то образом запутана.
System.Data.Entity.Core.EntityCommandExecutionException:
Произошла ошибка при выполнении определения команды. Подробности см. Во внутреннем исключении.
SqlException:
Неверное имя столбца 'ak_iglead_V_ak_igLeadId_V'
Неверное имя столбца 'ak_iglead_V_ak_igLeadId_Vmatched'