我正在尝试做一个简单的JSON返回,但我遇到了问题,我有以下内容.
public JsonResult GetEventData()
{
var data = Event.Find(x => x.ID != 0);
return Json(data);
}
Run Code Online (Sandbox Code Playgroud)
我得到了一个HTTP 500,例外情况如此问题的标题所示.我也试过了
var data = Event.All().ToList()
Run Code Online (Sandbox Code Playgroud)
这给了同样的问题.
这是一个错误还是我的实现?
我知道LINQ to Entities和LINQ to Objects的一些区别,第一个实现IQueryable和第二个实现IEnumerable,我的问题范围在EF 5中.
我的问题是这3种方法的技术差异是什么?我看到,在许多情况下,所有这些都有效.我也看到使用它们的组合.ToList().AsQueryable().
这些方法究竟意味着什么?
是否有任何性能问题或某些因素会导致使用另一个?
例如,为什么会使用?.ToList().AsQueryable()而不是.AsQueryable()?
linq-to-entities entity-framework entity-framework-4 entity-framework-5
我刚刚开始使用单元测试和TDD.我之前已经涉足过,但现在我决心将它添加到我的工作流程并编写更好的软件.
我昨天问了一个问题,包括这个问题,但这似乎是一个问题.我坐下来开始实现一个服务类,我将用它来从控制器中抽象出业务逻辑,并使用EF6映射到特定的模型和数据交互.
问题是我已经阻止了自己,因为我不想在存储库中抽象EF(它仍然可以在服务之外用于特定查询等)并且想测试我的服务(将使用EF Context) .
在这里我想是问题,有没有意义这样做?如果是这样的话,人们如何在野外做到这一点,因为IQueryable引起的漏洞抽象以及Ladislav Mrnka关于单元测试主题的许多重要帖子都不是直截了当的,因为Linq提供商在处理内存时存在差异与特定数据库相关的实现.
我想测试的代码看起来很简单.(这只是虚拟代码,试图理解我在做什么,我想用TDD驱动创建)
上下文
public interface IContext
{
IDbSet<Product> Products { get; set; }
IDbSet<Category> Categories { get; set; }
int SaveChanges();
}
public class DataContext : DbContext, IContext
{
public IDbSet<Product> Products { get; set; }
public IDbSet<Category> Categories { get; set; }
public DataContext(string connectionString)
: base(connectionString)
{
}
}
Run Code Online (Sandbox Code Playgroud)
服务
public class ProductService : IProductService
{
private IContext _context;
public ProductService(IContext dbContext)
{
_context = dbContext;
}
public IEnumerable<Product> GetAll() …Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像显示在WPF ListView中,其风格类似于WrapPanel,如旧的ATC Avalon团队文章中所述:如何创建自定义视图.

当我尝试使用LINQ-to-Entities查询的ADO.NET Entity Framework对象集合填充ListView时,我得到以下异常:
例外
在使用ItemsSource之前,项集合必须为空.
我的代码......
Visual Basic
Private Sub Window1_Loaded(...) Handles MyBase.Loaded
ListViewImages.ItemsSource = From g In db.Graphic _
Order By g.DateAdded Ascending _
Select g
End Sub
Run Code Online (Sandbox Code Playgroud)
XAML
<ListView Name="ListViewImages"
SelectionMode="Single"
ItemsSource="{Binding}">
<local:ImageView />
</ListView>
Run Code Online (Sandbox Code Playgroud)
我在那条线上放了一个断点. ListViewImages.ItemsSource是Nothing刚刚LINQ分配之前.
我正在尝试保存员工详细信息,其中包含对City的引用.但每当我尝试保存我的联系人时,我都会得到例外"ADO.Net实体框架实例对象不能被IEntityChangeTracker的多个实例引用"
我读了这么多帖子,但仍然没有弄清楚该怎么做...我的保存按钮点击代码如下
protected void Button1_Click(object sender, EventArgs e)
{
EmployeeService es = new EmployeeService();
CityService cs = new CityService();
DateTime dt = new DateTime(2008, 12, 12);
Payroll.Entities.Employee e1 = new Payroll.Entities.Employee();
Payroll.Entities.City city1 = cs.SelectCity(Convert.ToInt64(cmbCity.SelectedItem.Value));
e1.Name = "Archana";
e1.Title = "aaaa";
e1.BirthDate = dt;
e1.Gender = "F";
e1.HireDate = dt;
e1.MaritalStatus = "M";
e1.City = city1;
es.AddEmpoyee(e1,city1);
}
Run Code Online (Sandbox Code Playgroud)
和Employeeservice代码
public string AddEmpoyee(Payroll.Entities.Employee e1, Payroll.Entities.City c1)
{
Payroll_DAO1 payrollDAO = new Payroll_DAO1();
payrollDAO.AddToEmployee(e1); //Here I am getting Error..
payrollDAO.SaveChanges(); …Run Code Online (Sandbox Code Playgroud) 在使用EntityFramework时,我A lambda expression with a statement body cannot be converted to an expression tree在尝试编译以下代码时收到错误" ":
Obj[] myArray = objects.Select(o =>
{
var someLocalVar = o.someVar;
return new Obj() {
Var1 = someLocalVar,
Var2 = o.var2 };
}).ToArray();
Run Code Online (Sandbox Code Playgroud)
我不知道错误意味着什么,最重要的是如何解决它.有帮助吗?
我在C#中使用EF 6.0进行手动迁移和更新.我在数据库上有大约5次迁移,但我意识到上次迁移很糟糕,我不想要它.我知道我可以回滚到先前的迁移,但是当我添加新的(固定的)迁移并运行Update-Database时,即使应用了错误的迁移.
我试图回滚到上一次迁移并删除迁移错误的文件.但是,当我尝试添加新的迁移时,我在更新数据库时遇到错误,因为迁移文件已损坏(更具体地说,第一行代码将表A重命名为B并且是下一行,EF正在尝试更新表名字A - 也许是一些EF错误).
是否有一些我可以运行的查询,这会告诉EF类似于"忘记上次迁移,就像它从未存在过,这很糟糕"?像删除迁移这样的东西.
Edit1
我找到了适合我的解决方案.将模型更改为良好状态并运行Add-Migration TheBadMigration -Force.这将重新构建最后的,而不是应用的迁移.
无论如何,这仍然没有完全回答原来的问题.如果我将UpdateDatabase更改为错误的迁移,我没有找到如何回滚和创建新迁移的好方法,不包括坏迁移.
谢谢
我有一个现有的数据库,我想用EF4.0构建一个新的应用程序
某些表没有定义主键,因此当我创建新的实体数据模型时,我收到以下消息:"表/视图TABLE_NAME没有定义主键,也没有推断出有效的主键.此表/视图已被排除.要使用该实体,您需要检查您的架构,添加正确的密钥,并取消注释".
如果我想使用它们并修改数据,我是否必须在这些表中添加PK,或者是否有解决方法以便我不必?
我的命令保持超时,所以我需要更改默认命令超时值.
我发现了myDb.Database.Connection.ConnectionTimeout,但它确实如此readonly.
如何在Entity Framework 5中设置命令超时?
entity-framework ×10
c# ×7
.net ×3
.net-4.5 ×1
ado.net ×1
asp.net ×1
asp.net-mvc ×1
binding ×1
foreign-keys ×1
json ×1
linq ×1
migration ×1
rollback ×1
subsonic ×1
unit-testing ×1
vb.net ×1
wpf ×1