相关疑难解决方法(0)

无法跟踪实体类型的实例,因为已经跟踪了具有相同键的此类型的另一个实例

我有一个服务对象 Update

public bool Update(object original, object modified)
{
    var originalClient = (Client)original;
    var modifiedClient = (Client)modified;
    _context.Clients.Update(originalClient); //<-- throws the error
    _context.SaveChanges();
    //Variance checking and logging of changes between the modified and original
}
Run Code Online (Sandbox Code Playgroud)

这是我从以下方法调用此方法的地方:

public IActionResult Update(DetailViewModel vm)
{
    var originalClient = (Client)_service.GetAsNoTracking(vm.ClientId);
    var modifiedClient = (Client)_service.Fetch(vm.ClientId.ToString());
    // Changing the modifiedClient here
    _service.Update(originalClient, modifiedClient);
}
Run Code Online (Sandbox Code Playgroud)

这是GetAsNotTracking方法:

public Client GetAsNoTracking(long id)
{
    return GetClientQueryableObject(id).AsNoTracking().FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

Fetch 方法:

public object Fetch(string id)
{
   long fetchId;
   long.TryParse(id, out fetchId); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework

35
推荐指数
8
解决办法
5万
查看次数

使用Entity Framework 6支持SQL Server更改跟踪

我有一个从现有SQL Server数据库生成的Entity Framework 6 Code First模型.数据库正在使用SQL Server更改跟踪,因此对于从EF生成的所有数据操作操作,我想设置更改跟踪上下文,以区别于其他外部进程所做的更改.这通常在T-SQL中完成
WITH CHANGE_TRACKING_CONTEXT (@source_id) UPDATE <table>...

我唯一能想到的是将上面的sql子句添加到EF生成的SQL中.虽然看来,想要修改ORM生成的SQL本身就值得怀疑.尽管如此,即使我想,我也不知道它可以在哪里完成.EF Command Interception可以达到目的吗?

问题是关于SQL Server的更改跟踪功能与EF一起使用(不是EF的更改跟踪).就EF而言,问题只是以编程方式修改EF生成的SQL

c# sql-server entity-framework change-tracking

16
推荐指数
2
解决办法
2129
查看次数

如何设置创建日期和修改日期以在DB第一种方法中进行设置

在我们的应用程序的每个SQL表中,我们都有"CreatedDate"和"ModifiedDate"列.我们正在使用DB第一种方法.当我保存数据时,我希望自动填充这两列.一种方法是getdate()在SQL表列本身上使用默认值.所以这将部分地解决问题.这意味着当实体是新的时,它将设置CreatedDate和ModifiedDate.但是,当我编辑/更新实体时,我只想ModifiedDate更新.
使用Code第一种方法有很多文章在做这件事.但我们正在使用DB第一种方法.
我有什么选择?

entity-framework ef-database-first

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

如何自动填充CreatedDate和ModifiedDate?

我正在学习ASP.NET核心MVC,我的模型是

namespace Joukyuu.Models
{
    public class Passage
    {
        public int PassageId { get; set; }
        public string Contents { get; set; }


        public DateTime CreatedDate { get; set; }
        public DateTime ModifiedDate { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

Passage表用于保存我写的段落.

脚本

  • Create视图只有一个字段Contents来输入一个段落. CreatedDate并且ModifiedDate必须由服务器自动设置为相等(使用UTC格式).

  • Edit视图只有一个字段Contents来编辑一个段落.ModifiedDate必须由服务器自动设置.

根据上述场景,我必须将哪些属性附加到CreatedDateModifiedDate属性以使它们由服务器自动填充?

c# entity-framework asp.net-core-mvc

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