Tag: entity framework 4

entity framework4:代码优先 – 在另一个模式中创建数据库? MapSingleType?

我有一个数据库,我使用2种不同的模式。 模式就像名称空间(如果我错了,请纠正我)。 这样我有1个db和当前2个模式…所以1个模式中的表可以与其他模式中的表命名相同,因为它们位于不同的模式中。 如何让EF Code首先与不同的模式进行通信而不是默认模式? 是否与MapSingleType和覆盖方法有关,或者我可以做其他事情吗? 任何帮助真的很感激。

C#.NET 4.0 MVC使用主键插入记录

我们有一个名为’Sites’的表的数据库这个表有列,SiteID,Name,Tags,Description,URI,SiteID是主键(它没有设置为Identity,因为我们想添加自己的ID) 我们一直在使用.NET 4.0 MVC和C#,并在我们需要的代码中设置了所有内容。 我们可以从数据库中选择并显示它们,以便我们知道它正在运行。 但是当我们尝试插入时,我们得到一个Cannot insert the value NULL into column ‘SiteID’错误。 如果我将列设置为Identity以便它自动生成,或者如果我取下主键那么它就没问题,但正如我所说它应该是主键,我们想插入自己的ID。 我的代码如下(我们在SaveChanges()上得到了错误,但已经在调试器中检查过,并且SiteID肯定被分配了一个int) 网站 public class Sites { [Key] public int SiteID { get; set; } public string Name { get; set; } public string Tags { get; set; } public string Description { get; set; } public string URI { get; set; […]

Code-First EF4中的多对多关系

您如何在EF4 Code-First CTP3中表示多对多关系? 例如,如果我有以下类: class User { public int Id { get; set; } public string Name { get; set; } public ICollection Profiles { get; set; } } class Profile { public int Id { get; set; } public string Name { get; set; } } 在数据库中有一个UserProfiles表,其中包含FK for User和FK for Profile。 我该如何映射? 编辑:我知道当前如何映射在Profile上有一个ICollection属性,但我真的不希望有一个相反的导航属性应该是“用户有很多配置文件”。

将entity framework模型从Web项目移动到类库中

我正在使用Entity Framework,并且最近意识到将EF模型放在同一解决方案中的另一个项目中的好处,以便我可以从中构建多个UI。 我将其移动到新的类库项目并更新了对Web项目中实体的所有引用,以使用项目生成的新dll。 除了一个小障碍外,一切都很顺利。 当我将EF移动到新项目时,不知何故它仍然从web项目中的web.config读取它的连接字符串(不要问我怎么,因为我没有线索)。 我在EF设计器中使用了“从数据库更新模型”并且没有找到连接字符串(正如我将其移动到新项目时所预期的那样)所以我使用向导生成了一个新的连接字符串,它做得很好。 新的连接字符串现在位于类库项目中的App.config中。 属性窗口中的连接字符串现在是正确的,设计人员正在从App.Config中读取它。 我继续并从Web项目中的Web.Config中删除了连接字符串。 现在运行应用程序时出现以下错误: 指定的命名连接在配置中找不到,不打算与EntityClient提供程序一起使用,或者无效。 如果我将连接字符串粘贴回Web.Config,它一切正常。 我不想从头开始创建一个新的EF模型,因为它是一个相当复杂的模型,我从数据库中提取后做了很多重组。 我已经把生成的CS文件以及edmx文件中的XML倾倒了,找不到任何有用的东西。 任何帮助深表感谢。 显然现在,直到我弄明白,我只是将连接字符串留在web.config中,因为无论出于何种原因,这似乎都有效。

如何获得entity framework代码第一个和可以为空的外键属性工作?

我正在尝试创建一个简单的entity framework代码第一个应用程序。 我有这些课程: public class User { public int UserId { get; set; } public string Username { get; set; } public virtual ActivationTicket ActivationTicket { get; set; } } public class ActivationTicket { public int ActivationTicketId { get; set; } public virtual User User { get; set; } public string Ticket { get; set; […]

使用Entity Framework 4.0 / .edmx从c#调用标量函数

我想将我的标量函数映射到我的.edmx但它失败了。 我右键单击我的entity framework映射,并从数据库中选择更新模型。 它出现在我的模型浏览器中的存储过程文件夹中。 但是,当我想将其添加到模型浏览器中的Function Imports文件夹时,下拉列表中不显示消息标量函数 。 有人能帮我吗? 我可以使用旧方法调用标量函数,例如: dbContext.ExecuteStoreQuery( “SELECT dbo.getMinActualLoadDate ({0}, {1}, {2}) AS MyResult”, LoadPkid, LoadFkStartLoc, TripSheetPkid).First(); 但这不是最好的方式。 我的经理希望我找到一种能够将标量函数放在“函数导入”文件夹中的方法,这样我就可以使用以下代码而不是前面的代码来调用标量函数: dbContext.ExecuteFunction(“getMinActualLoadDate “, paramList); 我试图添加一个图像来显示我的意思,但由于我的声誉仍然很低,我无法这样做。 然而,图像可以在这里找到: http : //social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/756865e5-ff25-4f5f-aad8-fed9d741c05d 谢谢。

如何正确分析entity framework?

为了从EF 4.1获得单个回调,我可以编写的最小代码量是多少,它提供了以下内容: OnSQLExecuted(DbCommand cmd, DateTime start, double durationMS, string stacktrace) 目前我们使用的是令人讨厌的黑客攻击,这似乎是在泄露性能,我很好奇我们如何能够在对应用程序产生最小影响的情况下实现此回调。 我们可以通过黑客入侵 Mini Profiler来解决这个问题 – 最后我们更改了Database.DefaultConnectionFactory但是默认工厂无法使用,这意味着您不能同时运行两个分析工厂。 所以我们采取了更积极的路线。 常用的技术非常简单,您实现: DbProviderFactory , IDbConnectionFactory , DbProviderServices , DbConnection , DbCommand和DbDataReader ,它们拦截调用和配置文件。 到目前为止,很容易……但是当你试图连接它时它会变得混乱: try { // ensure all the factories are loaded DbProviderFactories.GetFactory(“…”); } catch (ArgumentException) { } Type type = typeof(DbProviderFactories); DataTable table; // SUPER UGLY – Can […]

entity framework连接字符串不是来自配置

public class Context : DbContext { public Context(string connString) : base(connString) { Database.SetInitializer(new MyContextInitializer()); } //… 需要将连接字符串传递给上下文构造函数。 字符串应该如何,例如,对于SQL Compact? 试过这个,但没有成功: Context db = new Context(“Provider=System.Data.SqlServerCe.4.0;Data Source=D:\\Context.sdf”); 编辑: 如果我尝试这个字符串: “Data Source=D:\\Context.sdf” System.Data.ProviderIncompatibleException未处理 Message =从数据库获取提供程序信息时发生错误。 这可能是由entity framework使用不正确的连接字符串引起的。 检查内部exception以获取详细信息,并确保连接字符串正确。 来源=的EntityFramework 如果我尝试提到这样的提供程序: “Data Source=D:\\Context.sdf;provider=System.Data.SqlServerCe.4.0” System.ArgumentException未处理 消息=不支持关键字:’provider’。 来源= System.Data

更新Entity Framework中的现有EntityCollection

我尝试使用链接到实体,我想在我的应用程序中直接使用我的实体。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Calandar.Business.Manager.Data; namespace Calandar.Business.Models.Args { public class SaveExpertArgs { public ExpertEntity Expert { get; set; } public SaveExpertArgs(ExpertEntity expert) { Expert = expert; } } } public ExpertEntity SaveExpert(SaveExpertArgs args) { string connString = ConfigurationManager.ConnectionStrings[“CalendarContainer”].ConnectionString; using (CalendarContainer dbContext = new CalendarContainer(connString)) { ExpertEntity expert = (from […]

如何加载IEnumerable 类型的相关实体

我正在尝试加载SingleOrDefault实体的相关实体,但是我收到以下exception: IEnumerable类型的导航属性不是ICollection类型的单个实现 我已经尝试过这几种方法,并最终针对上下文针对每个查询获得相同的错误(我在评论中包含了其他方式)。 using(var context = CustomObjectContextCreator.Create()) { return context.Job.Include(“Surveys”).Include(“SiteInfoes”) .Where(r => r.Jobid == jobId).SingleOrDefault(); //context.ContextOptions.LazyLoadingEnabled = false; //var Job = context.Job.Where(r => r.Jobid == jobId).SingleOrDefault(); //context.LoadProperty(Job, “Surveys”); //context.LoadProperty(Job, “SiteInfoes”); //var Job = (from j in context.Job // .Include(“Surveys”) // .Include(“SiteInfoes”) // select j).SingleOrDefault(); //var Job = context.Job.Where(r => r.Jobid == jobId).SingleOrDefault(); //var surveys = […]