将 MVC 4 与 EF 5x 一起使用,对他们来说非常新。
我的实体和上下文等是在 VS 2010 中从现有数据库自动创建的,但是当我尝试通过原始 sql 查询获取结果时,我收到错误:
The data reader is incompatible with the specified 'PlatinumModel.Sales_Journal'. A member of the type, 'Line_No', does not have a corresponding column in the data reader with the same name.
与此错误相关的堆栈交换解决方案(数据读取器不兼容。成员不...)表明该错误是由于缺少列或模型 edmx 需要更新(尽管我已经完成了不需要,因为数据库尚未更改)
Sales_Journal.cs - Platinum.tt 文件的一部分
namespace PPoS_MVC_Site.Models
{
using System;
using System.Collections.Generic;
public partial class Sales_Journal
{
public int Line_No { get; set; }
public Nullable<System.DateTime> Date_Time { get; set; }
public Nullable<byte> Workstation_No { get; set; }
public Nullable<short> User_No { get; set; }
public Nullable<int> Trans_No { get; set; }
public Nullable<int> Invoice_No { get; set; }
public string Account_No { get; set; }
public string Product_Code { get; set; }
public string Department_No { get; set; }
public Nullable<float> Qty { get; set; }
public Nullable<float> Pack_Size { get; set; }
public Nullable<float> Ave_Cost { get; set; }
public Nullable<float> Sales_Tax { get; set; }
public Nullable<byte> Tax_Type { get; set; }
public Nullable<float> Discount_Amt { get; set; }
public Nullable<float> Dicount_Value { get; set; }
public Nullable<float> Line_Total { get; set; }
public Nullable<float> Function_Key { get; set; }
public Nullable<byte> Location { get; set; }
public Nullable<bool> Stock_Level { get; set; }
public Nullable<int> Branch_No { get; set; }
public Nullable<int> Cashup_No { get; set; }
public string Extra { get; set; }
public Nullable<decimal> Table_No { get; set; }
public Nullable<decimal> Tab_No { get; set; }
public Nullable<int> Covers { get; set; }
public Nullable<int> User_Overide { get; set; }
public string Room_No { get; set; }
public string Res_No { get; set; }
public string Instructions { get; set; }
public string Order_no { get; set; }
public Nullable<int> Points { get; set; }
public string Time_Placed { get; set; }
public Nullable<int> JobCard_No { get; set; }
public Nullable<int> Quote_No { get; set; }
public string Serial_No { get; set; }
}
}
Sales_Journal SQL 创建代码
CREATE TABLE [dbo].[Sales_Journal](
[Line_No] [int] IDENTITY(1,1) NOT NULL,
[Date_Time] [datetime] NULL,
[Workstation_No] [tinyint] NULL,
[User_No] [smallint] NULL,
[Trans_No] [int] NULL,
[Invoice_No] [int] NULL,
[Account_No] [nvarchar](16) NULL,
[Product_Code] [nvarchar](25) NULL,
[Department_No] [nvarchar](10) NULL,
[Qty] [real] NULL,
[Pack_Size] [real] NULL,
[Ave_Cost] [real] NULL,
[Sales_Tax] [real] NULL,
[Tax_Type] [tinyint] NULL,
[Discount_Amt] [real] NULL,
[Dicount_Value] [real] NULL,
[Line_Total] [real] NULL,
[Function_Key] [real] NULL,
[Location] [tinyint] NULL,
[Stock_Level] [bit] NULL,
[Branch_No] [int] NULL,
[Cashup_No] [int] NULL,
[Extra] [nvarchar](50) NULL,
[Table_No] [numeric](10, 1) NULL,
[Tab_No] [numeric](10, 1) NULL,
[Covers] [int] NULL,
[User_Overide] [int] NULL,
[Room_No] [char](10) NULL,
[Res_No] [char](10) NULL,
[Instructions] [nvarchar](250) NULL,
[Order_no] [varchar](40) NULL,
[Points] [int] NULL,
[Time_Placed] [varchar](5) NULL,
[JobCard_No] [int] NULL,
[Quote_No] [int] NULL,
[Serial_No] [varchar](25) NULL,
CONSTRAINT [PK_Sales_Journal] PRIMARY KEY CLUSTERED
(
[Line_No] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
控制器代码试图与之交互
public void calculateBasicDayData() {
string sSqlCash = "SELECT * FROM Sales_Journal WHERE Function_Key = 9 AND CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, Date_Time))) = '" + this.targetDate.ToString() + "'";
string sSqlCashCount = "SELECT COUNT(Sales_Journal.Line_No) FROM Sales_Journal WHERE Function_Key = 9 AND CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, Date_Time))) = '" + this.targetDate.ToString() + "'";
var sJournalCash = platContext.Sales_Journal.SqlQuery(sSqlCash);
this.NumberOfCashSales = platContext.Sales_Journal.SqlQuery(sSqlCashCount).Count();
this.TotalCash = this.calculateDayTotalSales(sJournalCash);
}
private decimal calculateDayTotalSales(System.Data.Entity.Infrastructure.DbSqlQuery<Sales_Journal> sj)
{
decimal cashtotal = 0;
foreach (var jItem in sj.ToList())
{
cashtotal += decimal.Parse(jItem.Line_Total.ToString());
}
return cashtotal;
}