简化。EF6
我有两个与 PersonId 相关的表
Person
PersonPK
FavouriteFood
PersonFK
FoodName
Run Code Online (Sandbox Code Playgroud)
我想要找到所有最喜欢“西红柿”食物的人
_db.Persons(p=>p.FavouriteFoods(???????))
Run Code Online (Sandbox Code Playgroud) 实体框架中有没有办法获得以下简单查询
SQL查询
select avg(totalsalary), avg(totalhours) from context.employeedetails where company = 1234
Run Code Online (Sandbox Code Playgroud)
在实体框架中,我们正在做一个分组,如下所示
employeedetails.Where(c => c.company = 1234).GroupBy(c => c.company).Select(x => new
{
avgsalary = x.Average(c => c.totalsalary),
= x.Average(c => c.totalhours)
})
Run Code Online (Sandbox Code Playgroud)
是否有正确的方法来重写上述查询,以便我们可以避免不必要的分组依据
我编写的一个小型 winform 应用程序在表单上有一个数据绑定 datagridview。它绑定到数据表。用户可以更改 datagridview 中显示的数据并单击“保存”按钮来更新底层数据库。我用一个dataTable.AcceptChanges()声明来做到这一点。
我想实现“撤消”功能,这样,如果更新后用户改变主意,他们可以通过点击“撤消”按钮来撤消更改。
我想我基本上只是在加载到 datagridview 时复制原始数据,然后在用户进行更改后将其与底层数据表进行比较。因此,当“原始”数据与更新后的数据之间存在差异时,我只需使用原始数据中的内容更新数据库即可。我希望这是有道理的。
但我的问题是,这是否是实现这一目标的好主意?我想保留原始数据的副本并使用它来撤消所做的更改似乎很简单,我只是想知道是否还有其他方法/机制可以做到这一点。
该程序使用使用实体框架构建的数据库优先的模型。
我的实体如下所示:
public class AddPatientReportDentalChartInput : IInputDto
{
[Required]
[MaxLength(PatientReportDentalChart.TeethDesc)]
public string Image { get; set; }
[Required]
public virtual int PatientID { get; set; }
[Required]
public virtual int TeethNO { get; set; }
public string SurfaceDefault1 { get; set; }
public string SurfaceDefault2 { get; set; }
public string SurfaceDefault3 { get; set; }
public string SurfaceDefault4 { get; set; }
public string SurfaceDefault5 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想更新的方法是:
public async Task addPatientReportDentalChart(AddPatientReportDentalChartInput input)
{
var pid = …Run Code Online (Sandbox Code Playgroud) c# entity-framework asp.net-mvc-4 entity-framework-5 entity-framework-6
我花了好几天才知道我的工作问题,但没有运气.

我可以看到断点(结果)正常给出查询结果.
但是json给出了异常流而没有错误消息.(即,http://localhost:41813/api/sheet/157返回"157",无法下载.一般情况下,"157.json"下载)

我将结果中的属性复制到我手工制作的POCO风格的类中,它可以工作.
我的问题是什么?我不能使用生成的模型类通过Json发送数据.我几乎没有发现问题,因为在结果断点之后没有错误消息和没有可用的调试步骤.
当我添加代码生成项时,我收到此错误:
试图安装'EntityFramework'的版本'5.0.0',但该项目已包含不同的版本.跳绳...
我怎么解决它?
.net error-handling entity-framework entity-framework-5 visual-studio-2012
该InitializeDatabaseConnection方法的文档说,我们可以用SQLCE(SQL Server精简4.0本地数据库)使用MVC 4"互联网"模板的生成会员功能.
我之前已经多次使用过这个模板,并且在我没有弄乱任何东西时只是使用了我们第一次注册用户时实体框架生成的localDb(默认).
我的要求是将默认情况下生成的成员资格表生成到2012 localDb数据库中,而不是生成到SQLCE数据库中.但是,我得到以下内容:
例外:无法找到请求的.Net Framework数据提供程序.它可能没有安装.
要做到这一点,我们只需:
~/App_Data/文件夹(右键单击该文件夹,然后选择添加 - > SQL Server Compact 4.0本地数据库).<add name="ceEntities")的名称~/Filters/InitializeSimpleMembershipAttribute类中找到以下代码行:WebSecurity.InitializeDatabaseConnection("ceEntities", "UserProfile", "UserId", "UserName", autoCreateTables: true);到目前为止,代码编译并运行正常,但是当在~/Filters/InitializeSimpleMembershipAttribute类中运行以下代码行时:
WebSecurity.InitializeDatabaseConnection("ceEntities", "UserProfile", "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)
捕获此异常: 无法找到请求的.Net Framework数据提供程序.它可能没有安装.
当我们将此代码添加到web.config时,这显然是修复的:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" /> …Run Code Online (Sandbox Code Playgroud) asp.net-membership sql-server-ce asp.net-mvc-4 entity-framework-5
我们的一台开发机器发出一条错误消息,指出DbContext它没有实现IDisposable.根据类似的SO帖子,这是因为我们没有引用EF 5.问题程序集有一个*.edmx使用较旧的EF 4构造(ObjectContext)构建的文件.同一个程序集还有一个新添加的*.edmx文件,其中包含较新的构造(DbContext).
不同机器上的不同项目也使用DbContext并且工作正常.该项目显示以下信息EntityFramework.dll:
version: 4.4.0.0
Runtime Version: v4.0.30319
Run Code Online (Sandbox Code Playgroud)
我检查了坏的构建机器,它也有相同的版本EntityFramework.dll.
微软在开发和营销版本命名约定之间存在令人困惑的冲突.那么EF 5是否意味着dll版本应该说5.0?
换句话说,我是否在良好的构建机器上运行v4.0?如果是这样,为什么构建成功?
我正在开发一个使用ASP.NET MVC 4和Entity Framework 5来跟踪错误和软件更改的票务系统.我需要一种方法从一组可能的数字中选择一个唯一的数字.我的想法是在使用它们并将其分配给支持票据时,从该集合中创建一组可能的数字和标记号码.
我有这个代码用于生成所有可能的票号以供选择,但我希望有前导零,以便所有票号具有相同的长度:
public static class GenerateNumber
{
private static IEnumerable<int> GenerateNumbers(int count)
{
return Enumerable.Range(0, count);
}
public static IEnumerable<string> GenerateTicketNumbers(int count)
{
return GenerateNumbers(count).Select(n => "TN" + n.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我希望输出是
IEnumerable<string> ticketNumbers = GenerateNumber.GenerateTicketNumbers(Int32.MaxValue);
这样的:
TN0000000001
.
.
.
TN2147483647
希望我们不需要任何大的东西,Int32.MaxValue因为这意味着我们有太多的错误哈哈.我只想对可用数字的限制保证安全而不是遗憾.也许我们可以使用在解决后重复使用票号的方法.但是,我不知道我对重用的感觉,因为它可能导致稍后引用文档的模糊性.
考虑到这个集合的大小,这是获得唯一票号的最有效方法吗?
我有一个实体列表,当一些实体改变时,我只需执行以下操作:
DBContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
并保存所有修改.
但是现在我必须在某些实体被更改时(并且仅针对那些已更改的实体)执行一些业务逻辑,并且需要找到那些已更改的实体.但我似乎无法做到这一点.
我遇到过这篇文章:实体框架5 - 为什么在PropertyValue设置回原始状态后实体状态为"已修改"
有人检查.EntityState财产....
但我的实体没有这个属性.
作为最后的手段,我可以INotifyPropertyChanged在我的模型级别上使用,但如果EF5让我知道该实体的状态会很好.