Tag: entity framework

IIS中的内存exception

我有一个具有MVC模板并使用REST的应用程序。 假设我有一个rest电话,它会触及特定的方法 void sample function() { // connects to db through entity framework // retrieves data and embeds in to list //returns JSON of data received. } 所以这里的问题是我测量了运行程序所需的内存。 它大约是40,000kb。 现在,当我给另一个rest时,内存不会在IIS中清理。它从40,000kb而不是零开始。 最后 ,如果我做3或4次调用,则会出现内存exception。 因此,每次调用后我都需要清理IIS内存,而是保留前一次调用的内存。 如何释放以前所有调用的内存。我通过处理模型和所有其他可能性尝试了各种解决方案。 如果部署在本地而不是IIS上,解决方案似乎有效。 有人可以帮帮我吗?

如何减少域/实体/ DTO对象的重复?

我正在重新设计我当前的项目以使其更易于维护,并尽力遵循良好的设计实践。 目前我有一个Silverlight组件的解决方案,用于所述SL应用程序的ASP.Net主机,该应用程序还包含WCF RIA服务和共享类库,因此SL和WCF服务都可以共享对象。 业务逻辑遍布各处,所有CRUD操作都在我的WCF服务中手动编码。 所以,我正在为一切创建一个新的结构,并将这个混乱移植到新的格式。 在这样做的过程中,当我不知道自己是否应该这样时,我发现我正在复制课程。 我的新结构如下: 客户: Reporting.Silverlight = Silverlight应用程序。 这将参考我的DTO课程。 Reporting.Web =持有我的SL应用程序,是人们进入它的主要切入点。 商业: Reporting.Services =我的WCF服务就在这里。 我的SL应用程序将调用此方法来执行操作,这些服务将返回DTO类。 Reporting.Services.Contracts =保存我的WCF服务接口,并包含带有DataContract装饰器的DTO类。 Reporting.Domain =保存我的域对象和业务逻辑 数据: Reporting.Data.Contract =保存我的存储库和工作单元的接口 Reporting.Data =存储库/ UoW的具体实现。 这里定义了Entity Framework 5上下文。 Reporting.Data.Models =保存我的所有Entity对象,以便EF5可以用SQL做它的事情。 我有3个地方,我几乎完全相同的课程,对我来说它闻起来。 在Reporting.Services.Contracts内部,我有一个DTO,可以交给SL客户端。 这是一个例子: [DataContract(Name = “ComputerDTO”)] public class ComputerDTO { [DataMember(Name = “Hostname”)] public string Hostname { get; set; } [DataMember(Name = […]

entity framework – 使用外键删除对象,保留父对象

我有以下型号: public class Company { //Primary key public string ID { get; set; } //Foreign key public int? LogotypeID { get; set; } } 和 public class Logotype { //Primary key [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int? ID { get; set; } //Foreign key public string CompanyID { get; set; } } 如何在不删除公司行的情况下从Company表中删除标识? 使用: http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.remove(v=vs.113).aspx DbSet.Remove(Logotype)引发以下exception: {“The DELETE […]

EF ObjectContext,Service and Repository – 管理上下文生命周期。

我是MVP和entity framework世界的新手,所以请耐心等待。 我目前有一个View + Presenter组合,视图有两个事件Edit和Delete,演示者只是监听这些事件。 我还有一个服务对象和存储库设置。 服务层采用一些存储库实现,这些实现采用ObjectContext,因此构造的顺序是(将顶层对象传递给它下面的对象: ObjectContext | V Repositries | V Service Object | V Presenter 现在的问题是,当我在顶部创建对象上下文时,它一直存在,演示者处于活着状态,这意味着编辑和删除使用来自服务的相同上下文实例。 因此,调用ServiceObject.Delete和ServiceObject.Edit会使用相同的上下文,这使得很难管理更改跟踪。 根据我的理解,上下文应该只是短暂的,只有一个工作单元,对我来说编辑和删除都是不同的工作。 您如何使用entity framework进行DI并仍然管理上下文生命周期? 我看到人们刚刚在存储库中新建了对象上下文,这是一个很好的模式。 或者我应该在服务对象中执行此操作,例如: ServiceObject{ public void Edit(// some args) { Using(var context = new MyObjectContext) { var repo = new MyRepo(context); var entity = repo.GetForID(12); // Do some stuff for edit context.SaveChanges(); } […]

entity framework代码优先 – 定义此EntityType的密钥

嗨,我打算在我的一个项目中测试EF Code First。 这就是我想要的。 我有三个表,结构如下 public partial class App_user { public int id { get; set; } public string name { get; set; } public string email_address { get; set; } public string password { get; set; } public int user_type { get; set; } public List Roles { get; set; } } public partial […]

将EF模型序列化为Json时的循环引用

我知道有很多关于这个主题的问题,但是没有一个问题解决了我的问题。 我正在使用MVC 5和Entity Framework 6以及Newtonsoft.Json。 我有这种例外的通常情况: Service => Staff => Service 当我尝试在我的视图中序列化service对象时,如下所示: var arr = @Html.Raw(@JsonConvert.SerializeObject(Model.Services)); 我得到“ circular reference was detected while serializing an object of type… ”exception。 我在这里找到的所有答案都说它很难解决,我应该补充一下 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings .PreserveReferencesHandling = PreserveReferencesHandling.All; GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings .ReferenceLoopHandling = ReferenceLoopHandling.Serialize; 在我的Global.asax文件中。 好吧,我做了,它只是不起作用。 我在MSDN上阅读了一堆文章,他们都说了同样的话。 我不知道为什么,但它对我不起作用。 我能使其工作的唯一方法是在我的控制器中创建整个序列化上下文: var settings = new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All, ReferenceLoopHandling = ReferenceLoopHandling.Serialize }; […]

如何从SQL查询返回动态对象

我有一个storeprocdure返回集合的情况,但我没有如何对象结构,因为查询是非常动态的。 一个查询可以返回: Id | 位置| MarketSegment | …… n列 而另一个可以回来 Id | 销售代表| 位置| 地区| …… n列 我只是简单地返回一个“对象”,如下面的代码所示。 我知道这不会起作用,但是如何设置它呢? using (DbContext db = new Context()) { var items = db.Database.SqlQuery( “SP @Param1, @Param2”, new SqlParameter(“Param1”, ped), new SqlParameter(“Param2”, 25) ).ToList(); return Request.CreateResponse<List>(HttpStatusCode.OK, items); } 编辑: 我不知道无论如何显示SP都会有所帮助,除非我能解释得更多。 每列都表示为自定义字段。 用户可以创建n个自定义字段。 因此,如果您为User1运行SP并且他有5个自定义字段,则每个自定义字段将在列中表示,但如果User2有3个自定义字段,则只表示3列。 我无法控制的是自定义字段名称和自定义字段数。

更新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 […]

entity frameworkCodeFirst延迟经历

我正在学习entity framework,我目前正面临一个问题,我花了大约10秒钟从数据库中检索数据或更新一行,好像我的代码实际上已经停留了一段时间,即使调试它一切很正常。 除了延迟之外,代码本身实际上按预期工作。 在Google上搜索,我在这里找不到与此问题相关的其他人与entity framework相关的问题。 我想也许这与我的CodeFirstMySQLEntities类构造函数有关,但不确定。 如果有人能为我提供指导,我将不胜感激。 这是主要代码: namespace CodeFirstMySQL { class Program { static void Main(string[] args) { UserRepository userRepository = new UserRepository(); userRepository.Update(“Klein”, “OtherName”); //delay experienced here Console.WriteLine(“done”); Console.ReadLine(); } } } 这是DbContext代码: namespace CodeFirstMySQL.Database { public class CodeFirstMySQLEntities : DbContext { public CodeFirstMySQLEntities() : base(“CodeFirstMySQLEntities”) { } public DbSet Users { get; […]

在entity framework中连接两个表

我正在尝试在entity framework中连接两个表并从其中一个表中获取值以在第三个表上执行另一个查询这是我正在使用的查询 var fav = from favs in db.FAVORITES join pins in db.PINS on new { favs.USER_ID, favs.PIN_ID } equals new { userId, pins.PIN_ID } into res from r in res select new { favs.PIN_ID, r.TYPE_ID }; 但它给我一个语法错误。 在join子句中的一个表达式的类型是不正确的。 在对’GroupJoin’的调用中类型推断失败我已经搜索了错误并发现人们总是说要确保equals子句中的属性是相同的类型,是的是所有类型都是非可空的int