【发布时间】:2019-03-16 23:55:14
【问题描述】:
我是 ASP.NET 新手,无法找到任何解决方案,也找不到与我的问题相关的线索。
我想通过获取当前已连接用户的操作方法,使用 onesignal 唯一标识符更新数据库中的用户。
我使用的是数据库优先方法。
启动请求时出现以下错误:
System.InvalidOperationException:实体类型 PartenaireResult 不是当前上下文模型的一部分。
问题是 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; }
}
}
我们将不胜感激。
感谢任何愿意花时间阅读/回答这篇文章的人。
【问题讨论】:
-
异常出现在哪一行?
ObjectConverterHelper.CopyProperties(me, PartenaireRes);是什么?是否从me映射属性到PartenaireRes? -
是的,它正在这样做。这是唯一使用
PartenaireResult实例的行。所以异常一定来自这一行。 -
如果您手动映射属性,是否有效?在你的情况下,我会使用 AutoMapper。
-
partenaireresult 是否引用了 .edmx 中定义的任何类型?
-
@Cygnus 是的,我的
PartenaireResult中有一个PartenaireType,它在我的.edmx 文件中。
标签: c# asp.net entity-framework asp.net-mvc-4 entity-framework-6