Sql 指定的类型成员';组织';在LINQ to实体中不支持
所以我从学校接管了这个利用MVC的项目,我在学习的过程中不断学习。学校希望我做的一件事是向数据库中添加一个名为Organization的新表。他们希望组织在用户表(AspNetUser)中有一个外键,用主键Org_ID和组织名称Org_Type将其链接到组织表。他们希望每个用户都是特定组织的一部分。我已成功地将该表添加到数据库中。现在有一个数据输入表,显示scholarshipCredits表的所有输入数据。此表当前可以通过电子邮件搜索进行筛选,但他们希望它也能够通过姓氏或组织进行搜索。我当前正在尝试使组织显示在表中。如果我将视图中的显示信息更改为AspNetUser中的外键,它将在表中正确显示,但我希望显示Org_类型。我将组织表加入到控制器中的linq声明“scholarshipCredits”中,我认为这可以解决问题,但事实并非如此。当我尝试对列“organizations”进行排序时,会出现以下错误:LINQ to Entities中不支持指定类型的成员“organizations”。仅支持初始值设定项、实体成员和实体导航属性。任何帮助都将不胜感激 视图: 型号:Sql 指定的类型成员';组织';在LINQ to实体中不支持,sql,linq,model-view-controller,Sql,Linq,Model View Controller,所以我从学校接管了这个利用MVC的项目,我在学习的过程中不断学习。学校希望我做的一件事是向数据库中添加一个名为Organization的新表。他们希望组织在用户表(AspNetUser)中有一个外键,用主键Org_ID和组织名称Org_Type将其链接到组织表。他们希望每个用户都是特定组织的一部分。我已成功地将该表添加到数据库中。现在有一个数据输入表,显示scholarshipCredits表的所有输入数据。此表当前可以通过电子邮件搜索进行筛选,但他们希望它也能够通过姓氏或组织进行搜索。我当前正
public partial class ScholarshipCredit
{
public int StemId { get; set; }
public string UserId { get; set; }
public string Date { get; set; }
public Nullable<bool> IsSpent { get; set; }
public static double totalHours { get; set; }
public static double totalCredits { get; set; }
public static double spentCredits { get; set; }
public static double remainingCredits { get; set; }
public string userEmailSearch { get; set; }
public virtual AspNetUser AspNetUser { get; set; }
public virtual StemActivity StemActivity { get; set; }
public virtual Organizations Organizations { get; set; }
}
公共部分课程奖学金
{
公共整数StemId{get;set;}
公共字符串用户标识{get;set;}
公共字符串日期{get;set;}
公共可为空的ISPent{get;set;}
公共静态双总小时数{get;set;}
公共静态双totalCredits{get;set;}
公共静态双消费信用{get;set;}
公共静态双剩余积分{get;set;}
公共字符串userEmailSearch{get;set;}
公共虚拟AspNetUser AspNetUser{get;set;}
公共虚拟存储活动存储活动{get;set;}
公共虚拟组织{get;set;}
}
实体:
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<AspNetRole> AspNetRoles { get; set; }
public virtual DbSet<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual DbSet<AspNetUserLogin> AspNetUserLogins { get; set; }
public virtual DbSet<AspNetUser> AspNetUsers { get; set; }
public virtual DbSet<ScholarshipCredit> ScholarshipCredits { get; set; }
public virtual DbSet<StemActivity> StemActivities { get; set; }
public virtual DbSet<C__MigrationHistory> C__MigrationHistory { get; set; }
public virtual DbSet<Organizations> Organizations { get; set; }
}
公共部分类实体:DbContext
{
公共实体()
:base(“名称=实体”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
抛出新代码FirstException();
}
公共虚拟数据库集AspNetRoles{get;set;}
公共虚拟DbSet AspNetUserClaims{get;set;}
公共虚拟数据库集AspNetUserLogins{get;set;}
公共虚拟数据库集AspNetUsers{get;set;}
公共虚拟DbSet ScholarshipCredits{get;set;}
公共虚拟数据库集存储活动{get;set;}
公共虚拟数据库集C__迁移历史{get;set;}
公共虚拟数据库集组织{get;set;}
}
不要加入组织,只需加入即可。更改var scholarshipCredits=db.scholarshipCredits.Include(s=>s.AspNetUser).Include(s=>s.StemActivity).Join(db.Organizations,s=>s.AspNetUser.Org_ID,o=>o.Org_ID,(s,o)=>s)
tovar scholarshipCredits=db.scholarshipCredits.Include(s=>s.AspNetUser)。Include(s=>s.StemActivity)。Include(s=>s.Organizations)代码>感谢您的回复。当我尝试执行此操作并转到带有表的页面时,它会给我一个错误“指定的包含路径无效”。EntityType“l2eDataModel.ScholarshipCredit”未声明名为“Organizations”的导航属性。这就是为什么我更改为join,认为这是错误的原因。我认为发生这种情况是因为我合并了4个表。ScholarshipCredits连接到AspNetUsers和STEMActivity,现在通过AspNetUsers的外键连接到组织。奖学金和组织没有直接联系。你知道如何修复它吗?我不能直接链接它们,因为组织将属于每个单独的用户。不遵循。在课堂上展示你的组织。你是说它不是1:M(一个奖学金可以属于一个组织,组织可以有很多奖学金)?也看看数据库。EF是否在ScholarshipCredit中创建了组织表和FK?
public partial class ScholarshipCredit
{
public int StemId { get; set; }
public string UserId { get; set; }
public string Date { get; set; }
public Nullable<bool> IsSpent { get; set; }
public static double totalHours { get; set; }
public static double totalCredits { get; set; }
public static double spentCredits { get; set; }
public static double remainingCredits { get; set; }
public string userEmailSearch { get; set; }
public virtual AspNetUser AspNetUser { get; set; }
public virtual StemActivity StemActivity { get; set; }
public virtual Organizations Organizations { get; set; }
}
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<AspNetRole> AspNetRoles { get; set; }
public virtual DbSet<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual DbSet<AspNetUserLogin> AspNetUserLogins { get; set; }
public virtual DbSet<AspNetUser> AspNetUsers { get; set; }
public virtual DbSet<ScholarshipCredit> ScholarshipCredits { get; set; }
public virtual DbSet<StemActivity> StemActivities { get; set; }
public virtual DbSet<C__MigrationHistory> C__MigrationHistory { get; set; }
public virtual DbSet<Organizations> Organizations { get; set; }
}