我一直在探索在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 - 加载原始记录,设置更改的值
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
db.Entry(original).CurrentValues.SetValues(updatedUser);
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
优点
缺点
方法3 - 附加更新的记录并将状态设置为EntityState.Modified
db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
优点
在尝试将此SQL查询转换为LINQ时,我遇到了group by的问题.如何按多个来自多个表的列进行分组?下面的linq查询根本不会编译,所以我需要正确的语法
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)
var …Run Code Online (Sandbox Code Playgroud) 我有一种情况需要验证视图模型中字段的最大数量.但是,最大数量必须是可变的,并根据在此模型外部选择的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)
我的问题是,我怎样才能做到这一点?
我一直试图掌握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 包含模板文字,则使用最新版本的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
我目前正在使用Umbraco 6.1.6网站调查性能问题。该网站正在运行许多自定义代码,我确定这是原因,但是为了更好地帮助我理解应用程序,有人可以提供解释页面请求生命周期的图形化图表吗?
具体来说,我想了解从Umbraco应用程序的每个主要部分返回内容的流程,包括:
我希望这个已经存在,但是我在Umbraco论坛上找不到它。
c# ×4
javascript ×3
asp.net ×1
diagram ×1
knockout.js ×1
lifecycle ×1
linq ×1
oop ×1
umbraco ×1
umbraco6 ×1
validation ×1