尝试访问EF Code First数据库时出现无效的列名错误

时间:2015-02-14 14:24:16

标签: asp.net-mvc asp.net-web-api

我正在尝试使用以下代码访问EF表

public void UserLogin(string UserId, string Password)
        {
            var ErrorMessage = "";
            int ErrorCode = 0;
            var result = db.Users.Where(x => (x.LoginId.Equals(UserId) && x.Password.Equals(Password)));
            var favourites = db.Favourites.Where(x => x.LoginId.Equals(UserId)).ToList();

    }

我使用table["Table name"]选项仍然显示相同的错误

在收藏夹表中,我收到以下错误 -

{"Invalid column name 'LoginId'.\r\n
  Invalid column name 'LoginId'.\r\n
  Invalid column name 'LoginId'.\r\n
  Invalid column name 'Name'.\r\n
  Invalid column name 'StockExchange'.\r\n
  Invalid column name 'Symbol'."}

这是我的收藏夹模型的样子 -

[Table("Favourites")]
    public class Favourites
    {

         [Key]
         public int FavId { get; set; }
         public String LoginId { get; set; }
         public String LastTradePriceOnly { get; set; }
         public String Name { get; set; }
         public String StockExchange { get; set; }
         public String Symbol { get; set; }
         public String MarketCapitalization { get; set; }


    }

这是表格的数据定义 -

CREATE TABLE [dbo].[Favourites] (
    [FavId ]               INT            IDENTITY (1, 1) NOT NULL,
    [ LoginId]             NVARCHAR (MAX) NULL,
    [LastTradePriceOnly]   NVARCHAR (MAX) NULL,
    [ Name]                NVARCHAR (MAX) NULL,
    [ StockExchange]       NVARCHAR (MAX) NULL,
    [ Symbol ]             NVARCHAR (MAX) NULL,
    [MarketCapitalization] NVARCHAR (MAX) NULL,
    CONSTRAINT [PK_Favourites] PRIMARY KEY CLUSTERED ([FavId ])
);

我做错了什么?我该如何修复错误?

1 个答案:

答案 0 :(得分:0)

列名中有空格!

[ LoginId][ Name][ StockExchange]& [ Symbol ]在开头或结尾有一个空格,因此EF无法映射它。

更改列名以排除空格或在实体类中显式映射它们。

您可以使用DataAnnotations手动映射列,如此...

[Column(" LoginId")]