【问题标题】:Entity Framework 5.0 weird issueEntity Framework 5.0 奇怪的问题
【发布时间】:2013-08-17 10:22:34
【问题描述】:

我有以下数据库:

我已经从这个数据库中创建了 EDMX 模型。

一切都很好,直到我将Diagnosis 表添加到图表中。

下面的查询开始出错:

var appointments = from a in db.Appointment.Include("Patient")
                   where a.DoctorID == doctorId
                   select a;

我开始收到以下错误:

列名“DiagnosisID”无效。

在调试模式下,我检查了生成的数据库查询,结果是:

SELECT 
  [Extent1].[ID] AS [ID], 
  [Extent1].[DoctorID] AS [DoctorID], 
  [Extent1].[PatientID] AS [PatientID], 
  [Extent1].[DiagnosisID] AS [DiagnosisID], 
  [Extent1].[Date] AS [Date], 
  [Extent1].[Time] AS [Time], 
  [Extent1].[Duration] AS [Duration], 
  [Extent1].[Notes] AS [Notes], 
  [Extent2].[ID] AS [ID1], 
  [Extent2].[ContactDetailID] AS [ContactDetailID], 
  [Extent2].[FirstName] AS [FirstName], 
  [Extent2].[LastName] AS [LastName], 
  [Extent2].[Sex] AS [Sex], 
  [Extent2].[BirthDate] AS [BirthDate], 
  [Extent2].[CurrentDate] AS [CurrentDate], 
  [Extent2].[Notes] AS [Notes1]
FROM  [dbo].[Appointment] AS [Extent1]
LEFT OUTER JOIN [dbo].[Patient] AS [Extent2] ON [Extent1].[PatientID] = [Extent2].[ID]
WHERE (([Extent1].[DoctorID] = @p__linq__0) AND ( NOT ([Extent1].[DoctorID] IS NULL OR @p__linq__0 IS NULL))) OR (([Extent1].[DoctorID] IS NULL) AND (@p__linq__0 IS NULL))

/*
Int32 p__linq__0 = 1
*/

我的设计有什么问题吗?

下面是约会表设计:

这是约会表的 FK 定义:

一旦我调用可枚举对象的 ToList() 方法,就会发生异常,如下所示:

EF生成的类如下:


public partial class Appointment
    {
        public int ID { get; set; }
        public Nullable<int> DoctorID { get; set; }
        public Nullable<int> PatientID { get; set; }
        public Nullable<int> DiagnosisID { get; set; }
        public Nullable<System.DateTime> Date { get; set; }
        public Nullable<System.DateTime> Time { get; set; }
        public Nullable<byte> Duration { get; set; }
        public string Notes { get; set; }

        public virtual Diagnosis Diagnosis { get; set; }
        public virtual Doctor Doctor { get; set; }
        public virtual Patient Patient { get; set; }
    }

public partial class Diagnosis
    {
        public Diagnosis()
        {
            this.Appointment = new HashSet<Appointment>();
        }

        public int ID { get; set; }
        public string Symptoms { get; set; }
        public string Treatment { get; set; }
        public Nullable<System.DateTime> CurrentDate { get; set; }
        public string Notes { get; set; }

        public virtual ICollection<Appointment> Appointment { get; set; }
    }

EDMX 生成的类如下:

【问题讨论】:

  • 如果约会表一切正常,您是否查看过您的 SQL 数据库?
  • DiagnosisID 字段名称是否与您在数据库中的约会表中的列名称完全匹配?
  • 是的,它们确实与数据库中的字段名称“DiagnosisID”完全匹配。
  • 请仔细/三次检查您应用程序中的连接字符串,以确保您连接到正确的数据库!
  • @sza 那是错的。 EDMX 一直可用于所有版本的 EF,对于更高版本,代码优先已向前推进,但您始终可以选择。

标签: .net database entity-framework


【解决方案1】:

我刚刚发现了问题。它在连接字符串中! 我忘记更改指向生产服务器的连接字符串,并且我没有将更改的数据库同步回生产数据库。

感谢你们的努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2021-06-11
    • 2011-10-29
    • 1970-01-01
    • 2013-01-10
    • 2020-01-30
    相关资源
    最近更新 更多