gpt4 book ai didi

c# - ASP.NET/Entity Framework - 实体类型 PartenaireResult 不是当前上下文模型的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:10 25 4
gpt4 key购买 nike

我是 ASP.NET 的新手,找不到任何解决方案或与我的问题相关的线程。

我想通过获取当前连接用户的操作方法,用一个信号唯一标识符更新数据库中的用户。

我正在使用数据库优先方法。

发起请求时出现以下错误:

System.InvalidOperationException: The entity type PartenaireResult is not part of the model for the current context.

问题是 PartenaireResult 不是我表上的实体,只是一个返回数据的类。

我试过了 this solution没有运气(只添加另一个名为“DefaultConnection”的连接字符串,但我不明白 NinjectWebCommons 的概念。

我还尝试将此 coe 放入我的 DbContext 类中,但没有成功,如 thread 中所述:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PartenaireResult>().ToTable("PartenaireResult");
}

这是无效的方法:

[Authorize(Roles = "partenaire")]
[Route("api/Partenaires/Me")]
public PartenaireResult GetClientsMe(string onesignal_id)
{
var connectedUser = GetConnectedUser(User);
connectedUser.onesignal_id = onesignal_id;

db.Entry(connectedUser).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();

return connectedUser;
}

[Authorize(Roles = "partenaire")]
public static PartenaireResult GetConnectedUser(IPrincipal user)
{
var claimIdentity = user.Identity as ClaimsIdentity;
var claim = claimIdentity?.Claims?.FirstOrDefault(x => x.Type.Equals("IdClient", StringComparison.InvariantCultureIgnoreCase));

if (claim != null)
{
int idPartenaire;

if (int.TryParse(claim.Value, out idPartenaire))
{
using (var db = new UphairDbEntities())
{
var me = db.Partenaires.Find(idPartenaire);

PartenaireResult PartenaireRes = new PartenaireResult();
ObjectConverterHelper.CopyProperties(me, PartenaireRes);

return PartenaireRes;
}
}
}

return null;
}

这是我的 PartenaireResult 类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.AccessControl;
using System.Web;
using Uphair.EfModel;

namespace Uphair.Api.Models.Partenaire
{
public class PartenaireResult
{
public PartenaireResult()
{
}

public int IdPartenaire { get; set; }
public string NomComplet { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string PasswordSalt { get; set; }
public PartenaireType Type { get; set; }
public string Pays { get; set; }
public string Ville { get; set; }
public string CodePostale { get; set; }
public string Adresse { get; set; }
public Nullable<double> Lat { get; set; }
public Nullable<double> Lng { get; set; }
public string ImageUrl { get; set; }
public string CouvertureUrl { get; set; }
public string TelMobile { get; set; }
public Nullable<System.DateTime> DateNaissance { get; set; }
public bool ADomicile { get; set; }
public int SeDeplace { get; set; }

public string IdWallet { get; set; }
public string IdUserMango { get; set; }
public Nullable<System.DateTime> DateAjout { get; set; }

public string onesignal_id { get; set; }

public List<NoteItem> Notes { get; set; }

/**/
public double NoteGlobale { get; set; }

public bool Son { get; set; }
public bool Push { get; set; }
public string IdPhone { get; set; }
}

public class NoteItem
{
public int? IdClient { get; set; }
public string Commentaire { get; set; }
public string ImageUrl { get; set; }
public double Note { get; set; }
public DateTime? DateAjout { get; set; }

public int Valide { get; set; }
}
}

我们将不胜感激。

感谢所有愿意花时间阅读/回答这篇文章的人。

最佳答案

此问题的根本原因是 DbContext(“UphairDbEntities”实例)没有“PartenaireResult”类型。

  1. 首先,我会取消折叠您项目中的 .edmx 文件并找到“....tt”文件并将其展开。对于包含在 edmx 文件中的每个表,您应该会看到一个“..cs”文件。
  2. 确保那里有“PartenaireResult.cs”文件

如果文件不存在,则发生以下两种情况之一:

  1. 你有第二个 .edmx 文件(可能是你在创建这个文件之前删除的),它已经有一个“PartenaireResult.cs”文件。删除该文件(如果存在),打开并重新保存您的 .edmx 文件以重新生成“PartenaireResult.cs”文件作为项目的一部分。
  2. 您的 PartenaireResult.cs 不是 .edmx 的一部分,因此您的 UphairDbEntities 上下文没有 PartenaireResult 类型。

当您使用共享一个表的多个上下文时,经常会发生此问题。如果 Entities1() 和 Entities2() 都引用同一个表“Table1”,那么只有这些上下文中的一个具有该表。此问题的一种解决方法是在一个 .edmx 中重命名映射的表名;第二种解决方法是仅将表格保留在一个上下文中。

关于c# - ASP.NET/Entity Framework - 实体类型 PartenaireResult 不是当前上下文模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52767864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com