小编cko*_*nig的帖子

使用或不使用AutoMapper"合并"模型和ViewModel?

我目前正在使用ViewModels将我的Views与实际的Model结构分开.

例如,我有一个用户持久性实体和一个包含所有信息的MyProfile ViewModel,用户可以自己更改.对于从User到MyProfile的转换,我使用的是Automapper.

现在用户回复了他的(更改过的)信息后,我需要保存这些信息.但是ViewModel中的信息并不完整,当AutoMapper从ViewModel创建用户持久性实体时,重要信息会丢失.

我不想将此信息公开给视图层,尤其是隐藏的表单元素.

所以我需要一种方法将ViewModel合并到持久性实体中.我可以使用AutoMapper执行此操作,还是必须手动执行此操作?

例:

我的用户类包含ID,名字,姓氏,用户名和密码.用户应该只在他的个人资料中编辑他的名字和姓氏.因此,我的ProfileViewModel包含ID,名字和姓氏.从表单中回发信息后​​,Automapper从传输的ProfileViewModel创建一个User对象,在此对象中只设置ID,Firstname和Lastname.将此实体提供给我的存储库时,我丢失了用户名和密码信息.

viewmodel automapper asp.net-mvc-2

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

与Ninject集成测试

我熟悉这个事实,我不应该在单元测试中使用依赖注入,所以我可以独立地对每个层进行单元测试.

不过,我想为我的控制器创建集成测试.因此,我需要从单元测试中将我的存储库注入控制器.

我遵循使用T4脚本的通用方法,为每个控制器创建一个测试类,包含每个ActionResult的测试方法.这个测试方法应该简单地调用方法,以确保没有异常抛出到表面.

由于使用此T4脚本,我无法手动将存储库提供给控制器.我需要利用依赖注入.

根据我以前的经验,这应该工作,但我一直得到错误:

Unable to get default constructor for class <<UnitTest>>
Run Code Online (Sandbox Code Playgroud)

我生成的类目前看起来像这样:

[TestClass]
public class TestControllersHomeController
{
    private EL.NET.Web.Controllers.HomeController c;
    //setup
    public TestControllersHomeController(Project.Controllers.HomeController c)
    {
        this.c = c;
    }
    [ClassInitialize]
    public void ClassInitialize()
    {

        var kernel = NinjectWebCommon.CreatePublicKernel();
        kernel.Bind<TestControllersHomeController>().ToSelf();
        kernel.Bind<Project.Controllers.HomeController>().ToSelf();
    }
    [TestMethod]
    public void TestIndex()
    {
        var result = c.Index();
        Assert.IsNotNull(result);
    }
Run Code Online (Sandbox Code Playgroud)

编辑:

我已经发现,可以使用IKernel的GetService()方法加载存储库.但对于会员提供商,这不起作用.同样,我不想模拟提供程序,我想执行集成测试,所以我知道我的Controller方法是否抛出任何异常.

asp.net-mvc t4 integration-testing unit-testing ninject

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

正则表达式转义问号和双引号

我有以下字符串的几个出现的数据:

<a href="default.asp?itemID=987">
Run Code Online (Sandbox Code Playgroud)

其中itemID总是不同的.我正在使用C#,我希望使用正则表达式获取所有这些itemID.

起初我试过这个

"<a href=\"default.asp?itemID=([0-9]*)\">"
Run Code Online (Sandbox Code Playgroud)

但问号是保留字符.我考虑使用@运算符来禁用字符转义.但仍有一些双引号确实需要逃避.那么我会去

"<a href=\"default.asp\\?itemID=([0-9]*)\">"
Run Code Online (Sandbox Code Playgroud)

应该翻译(作为一个字符串)

<a href="default.asp\?itemID=([0-9]*)">
Run Code Online (Sandbox Code Playgroud)

但是Regex.Match方法没有成功.我在这里尝试了相同的正则表达式并且它有效.我究竟做错了什么?

c# regex escaping

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

EF:选择子类的所有实体(继承)

我正在使用数据库第一种方法和DbContext.我的数据模型中有几个继承结构(TPH).但是DbContext只为基类创建一个DbSet,而为子类创建没有.我应该如何检索指定子类的所有实体?

我无法根据映射标准编写查询,因为我必须从数据模型中删除这些字段.

我可以简单地将新的DbSet添加到Entities类(部分类)吗?

inheritance entity-framework-4 table-per-hierarchy database-first dbcontext

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