小编emr*_*azi的帖子

使用Entity Framework Core自动增加部分主键

我使用EF Core fluent API声明了以下模型:

modelBuilder.Entity<Foo>()
    .HasKey(p => new { p.Name, p.Id });
Run Code Online (Sandbox Code Playgroud)

当我在PostgreSQL中创建数据库时,这两个字段都被标记为主键,但Id字段未标记为自动增量.我也尝试过添加

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Run Code Online (Sandbox Code Playgroud)

到Foo下的Id字段,没有它对迁移代码产生任何影响.有没有办法制作Id AI虽然它是PPK?

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

39
推荐指数
4
解决办法
7万
查看次数

域模型与服务层中的ASP.NET MVC业务逻辑

我一直在阅读有关将业务逻辑放在ASP.NET MVC项目中的位置,我仍然无法弄清楚某些事情.

1 - 领域模型.这些真的是什么?在我的Model文件夹中,我只有一堆与我的数据库对应的类.我先使用EF代码.我认为这些是我的域模型.

2 - 服务层.这个答案暗示了一个服务层,我觉得这很有道理.我决定和这个一起去.然而,Martin Fowler的"贫血领域模型"文章搞砸了我的想法.

我不确定如何为我的域模型添加逻辑.

我经历了许多与业务逻辑相关的问题,每个问题都提出了1或2.我不明白的是我如何实现第一个问题.向实体类添加方法(对我来说是域模型)根本没有意义.为什么第二种方法被认为是坏的?

asp.net-mvc business-logic domain-model service-layer anemic-domain-model

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

在哪里将商业模式转换为查看模型?

在我的ASP.NET MVC应用程序中,我使用工作单元和存储库模式进行数据访问.

使用工作单元类和在其中定义的存储库,我在控制器中获取相关的实体集.凭借我的初学者知识,我可以想到两种方法来获取业务模型并将其转换为视图模型.

  • Repository将业务模型返回给控制器,这个模型比映射到视图模型,或者
  • 存储库本身将业务模型转换为视图模型,然后将其返回给控制器.

目前我正在使用第一种方法,但我的控制器代码开始看起来很丑,很长时间用于具有大量属性的视图模型.

另一方面,我在想,因为我的存储库名为UserRepository(例如),它应该直接返回业务模型,而不是仅对单个视图有用的模型.

您认为哪一项更适合大型项目?还有另一种方法吗?

谢谢.

c# asp.net-mvc entity-framework unit-of-work repository-pattern

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

如何在其他用户更改其用户名时强制注销用户?

在我的应用程序中,我使用Forms-Authentication登录并注销用户.

一个功能是管理员可以更改其他用户的用户名.在这种情况下,我需要注销用户名已更改的用户.

如果我不这样做,由于之前设置了cookie,他们可以访问应用程序并收到错误消息(因为他们的用户名不存在,并且有些部分我使用他们的用户名来实现某些功能).

如何强制这些用户使用Forms-Authentication注销?

更新:

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string controller = filterContext.RouteData.Values["controller"].ToString();
        string action     = filterContext.RouteData.Values["action"].ToString(); ;
        // Below returns the previous username, which does not exist anymore in db.
        string userName = HttpContext.Current.User.Identity.Name;

        UnitOfWork unitOfWork = new UnitOfWork();

        if (!unitOfWork.UserRepository.UserExists(userName))
        {
            FormsAuthentication.SignOut();
            filterContext.HttpContext.Session.Clear();
            filterContext.HttpContext.Session.Abandon();
            // I am not using Roles.


        }
        unitOfWork.Dispose();
        base.OnActionExecuting(filterContext);

    }
Run Code Online (Sandbox Code Playgroud)

在我的客户全局过滤器中,我检查用户是否存在,如果不存在,我将其签出.但是,它不起作用.通过工作我的意思是他们通过身份验证并获得应用程序访问权限

提前致谢.

c# asp.net-mvc forms-authentication

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

无法识别JQuery中的ASP.NET MVC Url.Action

我试图在我的js文件中使用Url.Action()方法来定义我的ajax调用的url.到目前为止,我失败了.

 $.ajax(
 {
    type: "POST",
    url: '@Url.Action("SomeAction", "SomeController")',
    data: { 
        fileID: rightClickedFileId
    },
    success: function (data) {

    }
 });
Run Code Online (Sandbox Code Playgroud)

如果我以这种方式定义网址,浏览器会尝试将数据发布到

http://localhost:5907/FileManager/@Url.Action(%22SomeAction%22,%20%22SomeController%22)
Run Code Online (Sandbox Code Playgroud)

结果我的ajax调用失败了.

但是,如果我'/SomeController/SomeAction'改用,那么每件事都可以.

第二个工作正常,但我想知道第一个问题?可能是由于路由配置?

谢谢.

ajax asp.net-mvc jquery

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

jQuery Chosen在填充时不显示数据占位符

我在我的ASP.NET MVC应用程序中使用jQuery Chosen插件.data-placeholder当下拉列表中包含项目时,该属性不起作用.它不会显示默认文本,而是自动选择列表中的第一项.

这是我定义下拉列表的方式.

@Html.DropDownListFor(m => m.Keep, Model.Data, 
     new { @class = "chzn-select", data_placeholder = "Default..." })
Run Code Online (Sandbox Code Playgroud)

如果Model.Data为空(使用EF在视图模型中填充),则显示默认文本.否则,选择第一个项目.我总是希望我的下拉列表显示默认值.

我通过$('.chzn-select').chosen();Nothing特殊应用插件.

有任何想法吗 ?提前致谢.

asp.net-mvc jquery jquery-chosen

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

如何在Entity Framework Code First中删除表?

我正在使用Entity Framework和Auto Migrations.

因此,当我向Context添加新模型时,我的数据库会更新并创建新表.

我想要做的是反过来,完全从数据库中删除表.但是,从Context类中删除定义不起作用.

public class CompanyContext : DbContext
{
    public DbSet<Permission> Permissions { get; set; }
    public DbSet<Company> Companies { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
       base.OnModelCreating(modelBuilder);
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,我想Company从数据库中删除表.为此,我CompaniesCompanyContext类中删除属性.但是,它不起作用.

如果可能,在EF中删除表并使用自动迁移的正确方法是什么?

c# entity-framework database-migration ef-code-first ef-migrations

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

未使用EF迁移创建SQL Azure表

我在我的应用程序中使用SQL Azure数据库进行EF迁移.在我手动删除SQL Azure中的表之前,它工作正常.现在,当我发布我的应用程序时,未在SQL Azure中创建删除表.这是我得到的错误.

Cannot find the object "dbo.TableName" because it does not exist 
or you do not have permissions.
Run Code Online (Sandbox Code Playgroud)

我觉得我在数据库和模型之间造成了一些不一致.

我正在使用自动迁移.

migration entity-framework azure-sql-database

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

ASP.NET MVC Unobtrusive客户端验证不起作用

在我的ASP.NET MVC 4应用程序中,我试图使用Fluent Validation进行不显眼的客户端验证.

<script src="/Scripts/jquery.validate.min.js" type="text/javascript">
</script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript">
</script>
Run Code Online (Sandbox Code Playgroud)

我在创建新的ASP.NET MVC 4应用程序时提供了VS2010提供的这两个.js文件.我还在我的web.config文件上启用了客户端验证.

<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

据我所知,当启用客户端验证和不引人注目的JavaScript时,带有客户端验证规则的输入字段包含data-val ="true"属性,以触发不显眼的客户端验证.我在输入字段中有这些字段.

例如,

<input class="input-validation-error" data-val="true" data-val- 
required="error text here" id="purchasePrice" 
name="PurchasePrice" type="text" value="">

<span class="field-validation-error error" data-valmsg-for="PurchasePrice" 
data-valmsg-replace="true">'Purchase Price' must not be empty.</span>
Run Code Online (Sandbox Code Playgroud)

但是,当我提交表单时,它会发布到控制器,我的模型会在我的控制器代码而不是客户端上进行检查.

编辑:

这是我的表格开头标签.

@using (Html.BeginForm("Create", "Product", FormMethod.Post, 
   new { enctype = "multipart/form-data", @class = "mainForm",
         @id = "productCreateForm" }))
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

asp.net-mvc fluentvalidation unobtrusive-validation

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

DropDownListFor内部编辑器不选择值

我发现了几个关于我的问题的问题,但没有一个问题实际上解决了问题,并提出了问题的替代解决方案,这就是为什么我再次问这个问题.

我使用的是强类型HTML帮助程序,而不是仅用于页面标题的ViewData和ViewBag.

这是我的问题.

我有以下viewmodel.

public class RegisterViewModel
{

    public string Mail                      { get; set; }
    public string Name                      { get; set; }

    public ThreePartDatePickerViewModel ThreePartDateSelection { get; set; }

    public RegisterViewModel()
    {
        ThreePartDateSelection = new ThreePartDatePickerViewModel();
    }
}
Run Code Online (Sandbox Code Playgroud)

以上viewmodel使用下面的viewmodel,它基本上保存3个下拉列表的数据,即日,月和年.

public class ThreePartDatePickerViewModel
{
    public string Day              { get; set; }
    public string Year             { get; set; }
    public string Month            { get; set; }

    public IList<SelectListItem> Years      { get; set; }
    public IList<SelectListItem> Months     { get; set; }
    public IList<SelectListItem> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc razor asp.net-mvc-4

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