我一直在玩FluentNhibernate作为S#arp架构的一部分.下面是一个示例映射.
public class EventBaseMap : ClassMap<EventBase>
{
public EventBaseMap()
{
WithTable("Event_Header");
//NotLazyLoaded();
Id(x => x.Id).WithUnsavedValue(-1).GeneratedBy.Native();
Map(x => x.Name).WithLengthOf(50).Not.Nullable();
Map(x => x.Description).WithLengthOf(255);
Map(x => x.Rating);
Map(x => x.Price);
Map(x => x.PhoneNumber).WithLengthOf(20).Not.Nullable();
Map(x => x.EmailAddress);
Map(x => x.Website);
Map(x => x.State).Not.Nullable().CustomSqlTypeIs("INT");
Component(x => x.Ages, m =>
{
m.Map(x => x.From).TheColumnNameIs("AgeFrom");
m.Map(x => x.To).TheColumnNameIs("AgeTo");
});
HasMany(x => x.Calendar).AsBag();
HasManyToMany(x => x.Tags)
.WithTableName("Event_Tags")
.WithParentKeyColumn("EventId")
.WithChildKeyColumn("TagId").AsBag();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我使用Nhibernate模式生成将我的ddl输出到文件.
FileInfo t = new FileInfo(Server.MapPath("~/bin/MyDDL.sql"));
StreamWriter writer = t.CreateText();
new SchemaExport(cfg).Execute(true, false, false, true, NHibernateSession.Current.Connection, writer); …Run Code Online (Sandbox Code Playgroud) 我一直在使用JQuery的JEditable插件,我想将错误返回给插件,指示它恢复到以前的值,并向用户显示错误.我有这个工作使用同步ajax调用,但我宁愿使用异步回调.我到底的代码如下.
$("#editbox").editable(submitEdit, {
indicator : "Saving...",
tooltip : "Click to edit...",
name : "Editable.EmailAddress",
id : "elementid",
type : "text",
submit : "<span class=\"mini_button\">Ok</span>",
cssclass : "edit_text"
});
function submitEdit(value, settings)
{
var edits = new Object();
var origvalue = this.revert;
var textbox = this;
edits[settings.name] = [value];
var returned = $.ajax({
url: "http://someurl.com/edit/",
type: "POST",
/*async: false,*/
data : edits,
dataType : "json",
complete : function (XMLHttpRequest, textStatus)
{
alert("Setting back to original value " +origvalue);
$(textbox).html(origvalue);
}
}); …Run Code Online (Sandbox Code Playgroud) 我正在进入CQRS和事件采购的第一次尝试,我有几点我喜欢一些指导.我想实现一个SO风格的声誉系统.这似乎非常适合这种架构.
以SO为例.假设一个问题被投票,这会产生一个UpvoteCommand增加问题总分并触发一个问题的问题QuestionUpvotedEvent.
似乎作者的用户聚合应该订阅QuestionUpvotedEvent可以提高声誉分数.但是,如何/何时进行此订阅对我来说并不清楚?在Greg Youngs示例中,事件/命令处理在global.asax中连接,但这似乎不涉及基于聚合ID的任何路由.
似乎每个User聚合都会订阅每个QuestionUpvotedEvent似乎都不正确的聚合,为了使这样的方案工作,事件处理程序必须展示行为以识别该用户是否拥有刚刚被投票的问题.Greg Young暗示这不应该在事件处理程序代码中,这应该只涉及状态更改.
我在这里弄错了什么?
任何指导非常感谢.
编辑
我想我们在这里讨论的是问题和用户聚合之间的聚合间通信.我可以看到的一个解决方案QuestionUpvotedEvent是由a订阅,ReputationEventHandler然后可以获取相应的用户AR并在该对象上调用相应的方法,例如YourQuestionWasUpvoted.这将反过来生成用户特定UserQuestionUpvoted事件,从而在将来保留重放能力.这个方向是朝着正确的方向发展吗?
编辑2
另请参阅此处有关Google群组的讨论.
如果我在Fluent NHibernate中映射了一个集合,并且我想对该集合应用一个订单,我该怎么做?
例如:
HasMany(x => x.PastDates)
.AsBag().Cascade
.SaveUpdate()
.KeyColumnNames.Add("EventId")
.Where(e => e.DateFrom < DateTime.Now.Date)
.Inverse();
Run Code Online (Sandbox Code Playgroud)
我正在寻找HBM文件中的order-by属性的等价物.
谢谢
我有一个内容可编辑的 div。在此我插入一个<pre>some code</pre>标签。此标签旨在允许用户输入格式化代码,类似于 SO。
我遇到的问题是 FF 正在插入<br>标签来代替 \r\n,这在正常的 Html 中是正确的,但在 pre 我实际上想要 \r\n。
我尝试将委托附加到父 contenteditable。但这不会为嵌套的 dom 元素触发。所以
$('#contenteditablediv').delegate('pre', 'keyup', function() { ... });
Run Code Online (Sandbox Code Playgroud)
不火。我还尝试处理父 div 上的正常 keyup,并用 \r\n 替换 pre 标签中的所有 brs。但这会弄乱插入符号并且很笨重。
有没有首选的方法来做到这一点?
我可能不得不求助于剥离它们的服务器端,但我宁愿不这样做。
非常感谢
如何在添加之前检查重复签名.在下面的场景中,如果没有签名找到列表,我想添加签名.
var Signature = function (name, interestDeclared) {
this.Name = ko.observable(name);
this.RelevantInterest = ko.observable(interestDeclared);
}
viewModel = {
signatures: ko.observableArray([]),
addSignature: function () {
var name = $('#signatureName').val();
var intd = $('#interest').is(':checked');
this.signatures.push(new Signature(name, intd));
},
deleteSignature: function (signature) {
this.signatures.remove(signature);
},
insertWitness: function (signature, position) {
this.signatures.splice(position, 0, signature);
}
};
ko.applyBindings(viewModel, document.getElementById("signatories"));
Run Code Online (Sandbox Code Playgroud)
谢谢, - 娜
这可能是显而易见的,但我无法弄清楚如何将静态json对象绑定到extjs中的FormPanel.我是ExtJs的新手,所以我还在学习.我有一个TreePanel,其中包含node.attributes对象中包含的各种附加属性.单击节点时,id表示要在表单中显示数据.以下是我所拥有的.数据不会绑定到字段.
extjs的所有示例都涵盖从商店或网址加载数据.
tree.on('click', function (n) {
var detailEl = details.body;
if (n.attributes.iconCls == 'page') {
detailEl.hide();
var form = new Ext.FormPanel({
frame: true,
renderTo: detailEl,
title: 'Page Details',
bodyStyle: 'padding:5px 5px 0',
width: 350,
defaults: { width: 230 },
defaultType: 'textfield',
data: n.attributes,
items: [{
fieldLabel: 'Title',
name: 'title',
allowBlank: false
}, {
fieldLabel: 'Url',
name: 'url',
allowBlank: false
}, {
fieldLabel: 'Live',
name: 'islive',
xtype: 'checkbox'
}
],
buttons: [{
text: 'Save'
}]
});
detailEl.slideIn('l', { stopFx: true, duration: …Run Code Online (Sandbox Code Playgroud) jquery ×2
arrays ×1
cqrs ×1
data-binding ×1
ddl ×1
extjs ×1
forms ×1
javascript ×1
jeditable ×1
knockout.js ×1
nhibernate ×1
rangy ×1