小编Sto*_*out的帖子

实体框架5更新记录

我一直在探索在ASP.NET MVC3环境中编辑/更新实体框架5中的记录的不同方法,但到目前为止,它们都没有勾选我需要的所有框.我会解释原因.

我找到了三种方法,我将提到它的优点和缺点:

方法1 - 加载原始记录,更新每个属性

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    original.BusinessEntityId = updatedUser.BusinessEntityId;
    original.Email = updatedUser.Email;
    original.EmployeeId = updatedUser.EmployeeId;
    original.Forename = updatedUser.Forename;
    original.Surname = updatedUser.Surname;
    original.Telephone = updatedUser.Telephone;
    original.Title = updatedUser.Title;
    original.Fax = updatedUser.Fax;
    original.ASPNetUserId = updatedUser.ASPNetUserId;
    db.SaveChanges();
}    
Run Code Online (Sandbox Code Playgroud)

优点

  • 可以指定更改哪些属性
  • 视图不需要包含每个属性

缺点

  • 在数据库上进行2次查询以加载原始数据然后更新它

方法2 - 加载原始记录,设置更改的值

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    db.Entry(original).CurrentValues.SetValues(updatedUser);
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

优点

  • 仅将已修改的属性发送到数据库

缺点

  • 视图需要包含每个属性
  • 在数据库上进行2次查询以加载原始数据然后更新它

方法3 - 附加更新的记录并将状态设置为EntityState.Modified

db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

优点

  • 1 x查询数据库以进行更新 …

c# asp.net-mvc-3 entity-framework-5

856
推荐指数
5
解决办法
43万
查看次数

Linq组由不同表中的多个字段组成

在尝试将此SQL查询转换为LINQ时,我遇到了group by的问题.如何按多个来自多个表的列进行分组?下面的linq查询根本不会编译,所以我需要正确的语法

原始SQL查询

select LTRIM(RTRIM(e.Shortname)) 
Name, LTRIM(RTRIM(j.JobName)) 
JobName, j.JobCode, 
SUM(Hours) Hours, 
MAX(ce.LatestTimesheetEntry) LastTimeSubmitted 
from TWCTL.TW.Postings p
join TWCTL.TW.Employees e on e.EmployeeId = p.EmployeeId
join TWCTL.TW.Jobs j on j.JobCode = p.JobCode
join CentralTimeEmployees.dbo.Employees ce on ce.CtEmployeeId = e.EmployeeId
where (e.CostCentreId = 1 or e.CostCentreId = 3) 
and (p.TransactionDate >= '2012-01-01' and p.TransactionDate <= '2012-07-01') 
and j.JobCode <> 'CTCIT00001' 
and ce.DatabaseCode = 'CTL' 
and (ce.CostCentreId = 1 or ce.CostCentreId = 3)
group by j.JobName, j.JobCode, Shortname
order by e.Shortname, j.JobName
Run Code Online (Sandbox Code Playgroud)

Linq查询尝试(不工作)

var …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

使用可观察参数进行Knockout Custom Validation

我有一种情况需要验证视图模型中字段的最大数量.但是,最大数量必须是可变的,并根据在此模型外部选择的UI项目计算.我试图在我的自定义验证器中包含observable作为参数,但是当值发生更改时,它似乎不会更新.

我有一种感觉,一旦第一次执行验证代码,它就会保留参数.

没有使用Knockout的列表的HTML

<select id="ContentsReplacementAmount">
    <option value="25000">£25000</option>
    <option value="50000">£50000</option>
    <option value="75000">£75000</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码的笨拙版本.

var SpecifiedValuablesViewModel = function (maxSpecifiedItemAmount) {
    var self = this;

    self.maxSpecifiedItemAmount = ko.observable(maxSpecifiedItemAmount);

    self.amountToAdd = ko.observable().extend({
        validation: {
            validator: function (val, max) {
                return val <= max;
            },
            message: 'The amount must be a maximum of £{0}',
            params: self.maxSpecifiedItemAmount()
        }
    });
};

var specifiedValuablesViewModel = new SpecifiedValuablesViewModel($('#ContentsReplacementAmount').val());
ko.applyBindings(ko.validatedObservable(specifiedValuablesViewModel), document.getElementById('SpecifiedValuables'));
Run Code Online (Sandbox Code Playgroud)

maxSpecifiedAmount之外的事件

$('#ContentsReplacementAmount').on('change', function () {
    specifiedValuablesViewModel.maxSpecifiedItemAmount(parseInt($(this).val()));
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,我怎样才能做到这一点?

javascript validation knockout.js knockout-validation

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

OO JavaScript调用父方法

我一直试图掌握OO JavaScript并创建了一个简单的例子.

function BasePage(name) {
    this.init(name);
}

BasePage.prototype = {
    init: function(name) {
       this.name = name; 
    },
    getName: function() {
        return this.name;
    }
}

function FaqPage (name, faq) {
    this.init(name, faq);
}

FaqPage.prototype = new BasePage();

FaqPage.prototype = {
    init: function(name, faq) {
        BasePage.prototype.init.call(this, name);
        this.faq = faq; 
    },
    getFaq: function() {
        return this.faq;
    }
}

var faqPage = new FaqPage('Faq Page', 'Faq');

var text = faqPage.getName() + ' ' + faqPage.getFaq();
$('body').text(text);
Run Code Online (Sandbox Code Playgroud)

运行此结果会导致以下消息:

未捕获TypeError:对象#<Object>没有方法'getName'

我想知道的是如何getName()在超类中调用该方法而不必在子类中重写和调用它? …

javascript oop

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

Microsoft.AspNet.Web.Optimization JavaScript 捆绑无法缩小模板文字

如果 JavaScript 包含模板文字,则使用最新版本Microsoft.AspNet.Web.Optimization v1.1.3我无法捆绑以缩小 JavaScript 。例如,如果我在我的捆绑脚本之一中包含以下内容:

var name = 'Bob';
var formattedName = `${name} says hello`;
Run Code Online (Sandbox Code Playgroud)

生成的包将加入所有文件,但不会缩小代码,并给我这个错误:

/* Minification failed. Returning unminified contents.
(2,13-14): run-time error JS1014: Invalid character: `
(2,15-16): run-time error JS1004: Expected ';': {
(2,30-31): run-time error JS1014: Invalid character: `
(3,1-2): run-time error JS1107: Expecting more source characters
*/
Run Code Online (Sandbox Code Playgroud)

我知道此功能仅在 ECMAScript2015 中引入,显然不受支持,但除了恢复到旧的字符串连接方法之外,是否还有其他干净的解决方法?

var name = 'Bob';
var formattedName = name + ' says hello';
Run Code Online (Sandbox Code Playgroud)

此外,模板文字支持是否会进入Microsoft.AspNet.Web.Optimization?

javascript c# asp.net model-view-controller bundling-and-minification

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

Umbraco请求生命周期图

我目前正在使用Umbraco 6.1.6网站调查性能问题。该网站正在运行许多自定义代码,我确定这是原因,但是为了更好地帮助我理解应用程序,有人可以提供解释页面请求生命周期的图形化图表吗?

具体来说,我想了解从Umbraco应用程序的每个主要部分返回内容的流程,包括:

  • 路由
  • 任何数据库请求发生的地方
  • 使用缓存的时间及其位置
  • razor / c#中的遍历节点如何工作,例如@ CurrentPage.Descendants()/ Ancestors()

我希望这个已经存在,但是我在Umbraco论坛上找不到它。

c# diagram lifecycle umbraco umbraco6

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