指定的类型成员'UserName'在 LINQ to 实体中不受支持



我试图通过使用url中的id参数来显示特定用户的图像,但我收到了以下错误消息:

LINQ to中不支持指定的类型成员"UserName"实体。仅初始值设定项、实体成员和实体导航属性。

这是我的操作方法:

[HttpGet]
public ActionResult Show(String id)
{
var images = new List<Image>();
var db = new portfolio_project_db();
if (String.IsNullOrEmpty(id))
{
return RedirectToAction("Index", "Home");
}
else
{
images = db.Images.Where(x => x.UserName == id).ToList();
return View(images);
}
}

我已经阅读了更多关于这个错误的信息,据我所知,人们之所以会这样做,是因为变量不是数据库中的列,但我的表Image中确实有一个UserName字段。

public partial class Image
{
public int ImageID { get; set; }
public string Title { get; set; }
public string ImagePath { get; set; }
public Nullable<int> UserID { get; set; }
public string UserName { get; set; }
}
CREATE TABLE [dbo].[Image] (
[ImageID]   INT            IDENTITY (1, 1) NOT NULL,
[Title]     VARCHAR (50)   NULL,
[ImagePath] NVARCHAR (MAX) NULL,
[UserID]    INT            NULL,
[UserName] NVARCHAR(20) NOT NULL, 
PRIMARY KEY CLUSTERED ([ImageID] ASC)
);

我需要做什么不同的事情?


请求:

public partial class portfolio_project_db : DbContext
{
public portfolio_project_db()
: base("name=portfolio_project_db")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Image> Images { get; set; }
}

LINQ to Entities中不支持指定的类型成员"UserName">消息表示属性UserName仍未映射到数据库中的UserName列。以下是在数据库优先配置中启用属性映射的步骤(因为UnintentionalCodeFirstException()存在于OnModelCreating()方法中(:

a。使用EDMX设计器(推荐(

1( 从Image数据模型类中删除现有的UserName属性。

2( 在实体设计器中打开模型的EDMX文件,然后右键单击设计器曲面的任何空白处,然后选择Update Model from Database选项。

3( 将所有更改保存在EDMX设计器中,现在UserName属性自动使用数据库中的CCD_ 9列创建并映射。

b。编辑EDMX文件以创建映射(高级-不推荐(

这种方法需要编辑EDMX文件,通过在<edmx:StorageModels><edmx:ConceptualModels><edmx:Mappings>部分中添加属性名称来手动添加映射属性:

<!-- for edmx:StorageModels -->
<Property Name="UserName" Type="nvarchar" MaxLength="20" Nullable="false" />
<!-- for edmx:ConceptualModels -->
<Property Name="UserName" Type="String" MaxLength="20" FixedLength="false" Unicode="true" Nullable="false" />
<!-- for edmx:Mappings -->
<ScalarProperty Name="UserName" ColumnName="UserName" />

注意:每次在数据库中添加或更新列和/或表架构时,都应该更新模型,以将数据库中的所有更改反映到数据模型类中。

相关内容

最新更新