c# - LINQ to Entities 不支持指定的类型成员“用户名”
问题描述
我正在尝试使用 url 中的 id 参数显示来自特定用户的图像,但我收到以下错误消息:
LINQ to Entities 不支持指定的类型成员“用户名”。仅支持初始化程序、实体成员和实体导航属性。
这是我的操作方法:
[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
数据库中的列。以下是在 Database First 配置中启用属性映射的步骤(因为UnintentionalCodeFirstException()
存在于OnModelCreating()
方法中):
一个。使用 EDMX 设计器(推荐)
1) 从数据模型类中删除现有UserName
属性。Image
2)在实体设计器中打开模型的EDMX文件,然后右键单击设计器表面的任何空白区域并选择Update Model from Database
选项。
3) 保存 EDMX 设计器中的所有更改,现在UserName
属性自动创建并映射UserName
到数据库中的列。
湾。编辑 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" />
注意:每次在数据库中添加或更新列和/或表模式时,都应该更新模型以将数据库中的所有更改反映到数据模型类中。
推荐阅读
- arrays - 推入打字稿时数组值不正确
- ios - 提取或预览 IOS 游戏动画
- javascript - Nodemailer - 为什么我的联系表单会从 undefined 随机发送一条“undefined undefined undefined”消息?
- bash - 问:循环遍历 csv/dat 文件以访问 shell 脚本中的各个行的最佳方法
- python - 修改 selenium webdriver 的参数
- neutralinojs - 从远程页面调用neutino.js客户端的功能没有任何响应
- spring - Spring Batch - 读取具有不同格式的多行数据的文件
- python - 使用 selenium python 登录机器人
- python - 用于获取调用输出并在其上再次应用函数的 Pythonic 方法
- java - Eclipse源附件配置路径不存在