我已经看到很多关于这个主题的问题,但是我无法解决任何实际解决我所看到的问题的问题.我有一个活动实体,它跟踪分配给哪个员工以及哪个员工创建了记录并对其进行了更新.如果我删除`where a.AssignedEmployee == currentUser'代码行,我不会得到下面的运行时错误.
无法创建"DataModels.Employee"类型的常量值.在此上下文中仅支持基元类型或枚举类型.
var query = from a in db.Activities
where a.AssignedEmployee == currentUser
where a.IsComplete == false
orderby a.DueDate
select a;
return View(query.ToList());
Run Code Online (Sandbox Code Playgroud)
@model IEnumerable<Data.DataModels.Activity>
..........
Run Code Online (Sandbox Code Playgroud) 所以我有这个代码:
public int saleCount(List<Shift> shifts) {
var query = (
from x in database.ItemSales
where shifts.Any(y => y.ID == x.shiftID)
select x.SalesCount
);
return query.Sum();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它抛出了这个错误:
Unable to create a constant value of type 'Shift'.
Only primitive types or enumeration types are supported in this context.
Run Code Online (Sandbox Code Playgroud)
所以这里是我定义shift的地方,这只是一个正常的Entity Framework Code First对象:
[Table("Shifts")]
public class Shift : MPropertyAsStringSettable {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int SiteID { get; set; }
public string ShiftID_In_POS { get; set; …
Run Code Online (Sandbox Code Playgroud) 我正在使用LinqPad来测试我的查询.当LInqPad连接到我的数据库(LInq to SQL)时,此查询有效但当我更改连接以使用我的Entity Framework 5 Model.dll时它不起作用.(Linq to Entity).这是在C#中.
我有两个名为Plan和PlanDetails的表.关系是许多PlanDetails的一个计划.
var q = from pd in PlanDetails
select new {
pd.PlanDetailID,
ThePlanName = (from p in this.Plans
where p.PlanID == pd.PlanID
select p.PlanName)
};
var results = q.ToList();
q.Dump(); //This is a linqpad method to output the result.
Run Code Online (Sandbox Code Playgroud)
我收到此错误"NotSupportedException:无法创建类型'Domain.Data.Plan'的常量值.在此上下文中仅支持基本类型或枚举类型." 任何想法为什么这只适用于Linq to SQL?
有人可以帮我解决这个异常:
测试方法KravmagaTests.Model.Entities.StudentTest.Create_Valid_Student抛出异常:System.NotSupportedException:无法创建类型为"Kravmaga.Models.Account"的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').
我运行这个测试方法时得到这个:
[TestMethod]
public void Create_Valid_Student()
{
Student student = new Student()
{
Username = "username",
Firstname = "firstname",
Surname = "surname",
Email = "email@gmail.com",
Password = "password",
};
KravmagaContext context = new KravmagaContext();
context.AddToAccounts(student);
context.Save();
bool exists = context.Accounts.Contains(student); // THIS THROWS EXCEPTION
Assert.IsTrue(exists);
}
Run Code Online (Sandbox Code Playgroud)
非常感谢.