相关疑难解决方法(0)

实体框架和连接池

我最近开始在我的.NET 4.0应用程序中使用Entity Framework 4.0,并对与池化相关的一些事情感到好奇.

  1. 据我所知,连接池由ADO.NET数据提供程序管理,在我的情况下是MS SQL服务器.当您实例化新的实体context(ObjectContext)时,这是否适用,即无参数new MyDatabaseModelEntities()

  2. a)为应用程序创建全局实体上下文(即一个静态实例)或b)使用using块为每个给定操作/方法创建和公开实体上下文有哪些优点和缺点.

  3. 我应该了解的某些场景的任何其他建议,最佳实践或常用方法?

.net database ado.net entity-framework connection-pooling

264
推荐指数
3
解决办法
11万
查看次数

在Entity Framework中获取最后添加的记录ID

我正在我的数据库中注册一个新客户端,当该操作完成时,我想显示该新客户端的详细视图.问题是我找不到发送到最近添加的客户端的Detailsaction方法的方法ID.

我正在研究这段代码:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(ClientModel credential)
{
    if(ModelState.IsValid)
    {
        database.Clients.Add(credential);
        database.SaveChanges();

        return RedirectToAction("Details", //Here is my problem, because sending credential.ID gives me an error as far as credential doesn't have an ID due it's not a database record.;
    }
    else
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是mi ClientModel:

[Table("Clients")]
public class ClientModel
{
    [Key]
    public Int16 ID { get; set; }

    [Required]
    public String Name { get; set; }

    public String Address …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework

8
推荐指数
1
解决办法
2万
查看次数

实体框架5重新加载时出现InvalidOperationException

我尝试使用重新加载功能丢弃一些更改.我得到了InvalidOperationException.我该如何防止这种情况?

DbContext.SaveChanges();
//Entity is in Unchanged state
//Make some changes to an entity
//Change state to modified
DbContext.Entry(entity).Reload();
Run Code Online (Sandbox Code Playgroud)

InvalidOperationException
调用了EntityMemberChanged或EntityComplexMemberChanged,而没有首先在具有相同属性名称的同一更改跟踪器上调用EntityMemberChanging或EntityComplexMemberChanging.有关正确报告更改的信息,请参阅实体框架文档.

编辑:
我启用和禁用ProxyCreationEnabled,LazyLoadingEnabled.
尝试了不同的方法.所有这些尝试都抛出相同的异常.

var objContext = ((IObjectContextAdapter)context).ObjectContext;
objContext.Refresh(RefreshMode.ClientWins, entry.Entity);
Run Code Online (Sandbox Code Playgroud)


entry.OriginalValues.SetValues(entry.GetDatabaseValues());
Run Code Online (Sandbox Code Playgroud)

希望我能得到解决方案.不想处置完整的DbContext来重新加载所有数据.

c# entity-framework

6
推荐指数
1
解决办法
1671
查看次数

我不明白EF5 dbContext.Entry(entity).Reload()方法应该如何工作?

在这个例子中:

using System;
using System.Collections.Generic;
using dbModel;
using System.Linq;
using System.Data.Entity.Infrastructure;


namespace WinApp
{
    public partial class Form1 : Form
    {
        private dbEntities dbc;
        public IQueryable<ARTIKLI> art;
        public IQueryable<ART_GRUPE> grp;

        public Form1()
        {
            InitializeComponent();
            dbc = new dbEntities();            
        }


        private void GetData()
        {
            art = from a in dbc.ARTIKLIs
                        select a;

            grp = from g in dbc.ART_GRUPE
                        select g;

            artikliBindingSource.DataSource = art.ToList();
            artGrupeBindingSource.DataSource = grp.ToList();
        }


        private void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
        {
            dbc.SaveChanges();
        }


        private void loadData_Click(object sender, EventArgs …
Run Code Online (Sandbox Code Playgroud)

c# orm winforms entity-framework-5

1
推荐指数
1
解决办法
1万
查看次数