小编D3v*_*3vy的帖子

MVC3中的当前上下文中不存在名称"model"

我在项目中添加了一个cshtml页面.当我尝试向其添加以下声明时,我收到一个错误:"当前上下文中不存在名称'model'".

@model xyz.abc.SomeClass
Run Code Online (Sandbox Code Playgroud)

我检查了参考文献,所有这些都已到位.我在视图文件夹中添加了一个web.config,但是没有修复它.

有什么我想念的吗?

razor asp.net-mvc-3

118
推荐指数
7
解决办法
10万
查看次数

调用ToList()后实体框架更改跟踪

我很难理解EF6中的变化跟踪.

我有类似的代码.

public class SomeClass
{
    private List<User> _users;
    private DAL _dal;

    public void ProcessUsers()
    {
        _users = _dal.GetUsers();

        foreach(var u in users)
        {
            u.user.Comment = "This is a test";
        }

        _dal.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

DAL类看起来有点像这样.

public class DAL
{
    ...
    private DataContext _context; // Assume that this is being newed up in a constructor.

    public List GetUsers()
    {
        return _context.Users.ToList();
    }

    public void SaveChanges()
    {
        _context.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,正如我们可以从ProcessUsers方法中的代码中看到的那样,我们有一个用户列表,我们正在修改该列表.

现在我知道这是有效的,它是我一直这样做的方式,但我总是认为列表中的对象(在这种情况下是用户)是对DBSet Local集合中相应对象的引用.

经过一番思考之后,我不确定是否会出现这种情况,好像上下文已被处理,列表仍然被填充并且可以被操作(我们只是松开了将其推回数据库的能力而没有一些额外的工作)所以从那里透视列表中的项目必须是DBSet Local集合中的项目的副本...但是如果是这种情况我不会操作列表中的对象会对dbset中的对象产生任何影响这将是一个副本.

综上所述

问题是当我在DBSet上调用ToList时会发生什么,以及在此实例中更改跟踪如何工作? - 我知道它确实有效,但我认为我目前的理解可能不正确.

c# entity-framework change-tracking entity-framework-6

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

.net-core依赖注入

我有一个Generic存储库,我想注册DI,它实现了一个接口IRepository.

通常我会像这样创建一个实例:

IRepository repo = new Repository<Order>();
Run Code Online (Sandbox Code Playgroud)

不过我想起床的速度在.NET 5提前释放,并希望得到这与DI的工作,我已经使出了以下内容:

services.AddTransient<DAL.IRepository<Models.Order>, DAL.Repository<Models.Order>>();
Run Code Online (Sandbox Code Playgroud)

但这感觉不对,我不希望在我的模型中的每个类中都有50多行...

我在网上找不到任何关于此的信息,我知道它可能与其他ioc容器有关..但由于这是一个学习项目,我不想使用另一个容器,我的目标是用.net5s原生容器来做.

c# dependency-injection inversion-of-control asp.net-core

7
推荐指数
2
解决办法
5510
查看次数

实体框架代码首先使用不同项目中的模型

晚上,我相信这可能很简单......但我做错了.

我正在尝试使用3个(现在的)项目创建一个解决方案:

  1. MCV Web App
  2. 楷模
  3. DAL(实体框架)

我想保持模型从UI和DAL不同的项目/组件,因为这些模型将成为项目之间重复使用,我们可能需要换出DAL等,而无需做手脚模型等...

无论如何,解决问题.

我在我的模型项目中创建了一些类,如:

public class Client
{
    public int ClientID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
    public string Notes { get; set; }
    public virtual Contact BillingContact { get; set; }
    public virtual ICollection<Contact> Contacts { get; set; }

    public virtual ICollection<Invoice> Invoices { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我在DAL中创建了一个DBContext

using System.Data.Entity;
using DBDS.Invoice.Models;

namespace …
Run Code Online (Sandbox Code Playgroud)

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

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