Tag: entity framework

动态连接字符串的设置entity framework

我正在开发一个应用程序,它将在多个数据库中使用相同的数据库模式。 出于这个原因,我创建了一个名为MyTemplate的数据库。 创建新用户时,他们将拥有自己的数据库实例。 因此,将创建一个名为MyTemplate_[UserName]的数据库。 当用户登录时,我需要将他们的查询指向他们的数据库。 出于这个原因,我知道我需要在运行时设置连接字符串。 我的问题是,我也想使用entity framework。 目前,我使用MyTemplate作为源创建了一个新的.edmx。 我以为我能够更新代码并在那里设置连接字符串。 不幸的是,我无法弄清楚如何设置它。 TemplateEntities的构造函数没有允许我传入连接字符串的重载。 我注意到TemplateEntities派生自DbContext,我不认为这会是问题所在。 string connectionString = GetUsersConnectionString(); using (TemplateEntities entities = new TemplateEntities()) { TemplateEntity entity = new TemplateEntity(); // Save to the database entities.TemplateEntity.Add(entity); entities.SaveChanges(); } 我是否错误地创建了.edmx ? 或者我完全错过了什么? 我谷歌的所有内容都显示了一个应该允许传入连接字符串的重载。但是,我没有可用的重载。

entity framework原始SQL查询

我必须从数据库中选择多个列,但我没有匹配的实体。 所以我的查询看起来像这样: var result = _dbContext.Database.SqlQuery<List>( “select ID, NAME, DB_FIELD from eis_hierarchy”); 我得到结果集,每行包含字符串列表但count为0。 那么如何使用Database.SqlQuery选择多个列?

在LINQ中获取结果函数而不转换为存储表达式

我需要从一个需要在LINQ查询中运行的函数中获取结果。 这个结果绑定到网格但在运行时遇到这个错误: LINQ to Entities无法识别方法’System.String GetName(System.Type,System.Object)’方法,并且此方法无法转换为商店表达式。 这是我的代码: public IQueryable GetForRah_CapacityList(XQueryParam param) { var result = (from x in Data() select new { Rah_CapacityId = x.Rah_CapacityId, Rah_CapacityName = x.Rah_CapacityName, Rah_St = Enum.GetName(typeof(Domain.Enums.CapacityState), x.Rah_St), Rah_LinesId = x.Rah_LinesId }).OrderByDescending(o => new { o.Rah_CapacityId }); return result; }

尽管将PreserveReferencesHandling设置为“None”,Json.Net仍向EF对象添加$ id

我已经看过如何在JSON序列化期间删除$ id但是给出的答案似乎对我没有用,我希望有人能弄清楚我做错了什么。 这是我的代码: return JsonConvert.SerializeObject(target, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include, PreserveReferencesHandling = PreserveReferencesHandling.None, ContractResolver = new CustomContractResolver(), Converters = CustomConverters }); 这个输出仍然以$ id出现,但仅限于entity framework对象,这是设计的吗? 如果是这样,有没有办法阻止Entity Framework对象上的那些$ id?

关于entity framework上下文生命周期的问题

我对ASP.NET MVC应用程序中entity framework上下文的期望生命周期有一些疑问。 是不是最好尽可能在最短的时间内保持上下文? 请考虑以下控制器操作: public ActionResult Index() { IEnumerable model; using (var context = new MyEntities()) { model = context.MyTable; } return View(model); } 上面的代码不起作用,因为在视图呈现页面时,entity framework上下文已超出范围。 其他人如何构建上面的代码?

EF中的可序列化类和动态代理 – 如何?

在[之前的post]中 ,我被设置为必须克隆我的实体的路径。 我尝试使用[codeproject]中的序列化方法。 因为这些类是由Entity Framework生成的,所以我在自定义.cs中单独标记它们,如下所示: [Serializable] public partial class Claims { } 但是,当检查时(在克隆方法中): if (Object.ReferenceEquals(source, null)) { 被击中,我收到错误: System.ArgumentException was unhandled by user code Message=The type must be serializable. Parameter name: source Source=Web ParamName=source StackTrace: at .Web.Cloner.Clone[T](T source) in C:\Users\.\Documents\Visual Studio 2010\Projects\.\Website\Extensions.Object.cs:line 49 at .Web.Models.Employer..ctor(User u) in C:\Users\.\Documents\Visual Studio 2010\Projects\.\Website\Models\EF.Custom.cs:line 121 at .Web.Controllers.AuthController.Register(String Company, String […]

为什么Asp.Net Identity IdentityDbContext是黑盒子?

IdentityDbContext似乎有很多混乱。 如果我们在应用程序中创建两个数据库上下文,一个用于Identity,另一个用于我们的自定义业务数据,则Identity Database Contextinheritance自IdentityDbContext,而我们的自定义业务数据inheritance自DbContext。 所以让我们将以下内容添加到控制器: private MyDbContext db = new MyDbContext(); private ApplicationDbContext identityDb = new ApplicationDbContext(); 以下是控制器中的Index方法: var thingsInMyBusinessDb = db.Things.ToList(); var usersInIndentityDb = identityDb.AspNetUsers.ToList(); // THIS WILL HAVE AN ERROR var roles = identityDb.AspNetRoles.ToList(); // ERROR 您还会注意到Indentity数据库中的表不可用。 为什么是这样? 目前从2.0.0-beta1开始,有一个用户和角色项目,但我希望实际的表格可用。 那么为何不? 如果我想访问AspNetUserRoles怎么办? 当然,如果它被视为entity framework中的任何数据库上下文,那么Asp.Net Identity的许多混乱和问题似乎都会消失。

entity framework4:如何查找主键?

我正在尝试使用EF4创建一个通用方法来查找对象的主键。 例 public string GetPrimaryKey() { … } 为了提供更多信息,我正在使用Tekpub StarterKit,下面是我试图启动和运行的课程 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Objects; using System.Data.Objects.ELinq; using System.Data.Linq; using Web.Infrastructure.Storage.EF4; namespace Web.Infrastructure.Storage { public class EFSession:ISession { PuzzleEntities _db;//This is an ObjectContext public EFSession() { _db = new PuzzleEntities(); } public void CommitChanges() { _db.SaveChanges(); } /// /// Gets […]

导航属性应该是虚拟的 – 在ef核心中不需要?

我记得在EF 导航属性应该是虚拟的 : public class Blog { public int BlogId { get; set; } public string Name { get; set; } public string Url { get; set; } public string Tags { get; set; } public virtual ICollection Posts { get; set; } } 但我看看EF Core并不认为它是虚拟的: public class Student { public int ID { get; […]

如何在Asp.net MVC和entity framework中进行分页时应用filter?

我有一个使用ASP.NET MVC框架编写的Web应用程序。 在我的Homecontroller我有一个名为Index的动作,它响应Get请求。 在此操作中,我使用IPagedList库创建页面以将记录分成多个页面。 我的Index@HttpGet看起来像这样 public ActionResult Index(int? id) { using(var connection = new Context()) { int pageNumber = (id ?? 1); var presenter = new Presenter { Presenter = pageNumber, Tasks = connection.Tasks.ToPagedList(pageNumber, 30), Form = new TasksFiltersViewModel() } return View(presenter); } } 我还有一个名为Index的操作,它响应Post请求,该请求应用了一些filter。 所以在Post请求中我做了这样的事情 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Index(Presenter model) { int pageNumber […]