我正在使用SQL Server 2008,我需要在一个大约500k行的表上创建一个更大的VARCHAR字段,从(200到1200).我需要知道的是,如果有任何问题我没有考虑过.
我将使用此TSQL语句:
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Run Code Online (Sandbox Code Playgroud)
我已经在数据的副本上试过了,这个陈述没有我能看到的不良影响.
这样做有什么可能的问题我可能没有考虑过吗?
顺便说一下,该列未编入索引.
从示例HR系统中获取以下代码.用户能够记录缺席并且可以是各种类型,包括假日和疾病.这将是一个ORM的域模型,如NHibernate.
public class Absence
{
public long Id {get;set;}
public Employee Employee {get;set;}
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
public virtual void DoSomething()
{ ... }
}
public class Holiday : Absence
{
public string Location {get;set;}
public override void DoSomething()
{ ... }
}
public class Sickness : Absence
{
public bool DoctorsNoteProvided {get;set;}
public override void DoSomething()
{ ... }
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子 - 请不要质疑为什么需要位置,假设它是一个规范.
用户想要改变类型 - 他认为员工病了,但后来记得这是假期.同样,您可能认为这是一个糟糕的设计,但将其视为一个要求 - 这代表了一个问题,这个问题已经出现过很多次了.
问题是您无法将对象的类型从"疾病"更改为"缺勤".一般来说,建议是赞成组合而不是继承(Gang of Four)并且这样做:
public class Absence
{ …
Run Code Online (Sandbox Code Playgroud) architecture nhibernate design-patterns domain-driven-design
继这个问题:
接受的答案和类似答案很好地回答了这个问题.但要进一步说明,如果销售部门和生产部门希望记录有关疾病和假期缺勤的不同信息,该怎么办?这可能是一个解决方案:
public class Holiday : Absence
{
//Extra fields go here.
}
public class Sickness : Absence
{
//Extra fields go here.
}
public class SalesHoliday : Holiday
{
//Extra fields go here.
}
public class SalesSickness : Sickness
{
//Extra fields go here.
}
public class ProductionHoliday : Sickness
{
//Extra fields go here.
}
public class ProductionSickness : Sickness
{
//Extra fields go here.
}
Run Code Online (Sandbox Code Playgroud)
显然,这是阶级爆炸的开始,只会变得更糟,因此应该避免.
一种可能的解决方案是使用装饰器模式(Gang of Four).这将是理想的,但在这个假设的例子中,持久性是使用NHibernate.我已经到处寻找一个如何在NHibernate中映射Decorator模式而没有找到任何东西的例子.我的实验有一点,利用了子类映射,连接子类映射,并集子类映射,鉴别符,隐式多态和多对映射的各种组合,但到目前为止还没有令人满意的结果.有没有人破解过这个?Employee实体将拥有任何类型的缺席集合,因此需要多态行为.
architecture nhibernate design-patterns domain-driven-design decorator
我对开发DDD应用程序非常有信心,但是一个继续引起我问题的领域是两个应用程序相互集成.我正在努力寻找关于这个主题的任何有用的书籍或资源.像EAI模式这样的书籍深入探讨了消息传递模式和消息构建,但并没有真正解释如何构建利用这些模式的系统.
我搜索过高和低,我很确定没有示例应用程序可以说明如何集成两个系统.我理解异步消息传递的概念,但再次找不到如何应用它的好例子.
SOA上的资源似乎不重复相同的概念,而没有演示如何实现它们,而且往往更关心的是销售我的产品.
以下是我正在努力回答的问题:
每个应用程序是否应该拥有自己的数据副本?例如,组织中的每个应用程序是否都有自己的客户端列表,并在收到消息后更新?
在DDD堆栈中的什么时候传递消息?它们是域事件的结果吗?
我可以组合异步消息传递和WCF,还是我必须选择?我是否将WCF用于发布/订阅的请求/响应和消息传递?
一个DDD应用程序如何使用另一个应用程序的服务?一个DDD应用程序是应该通过其应用程序服务查询另一个系统的数据,还是应该已经拥有自己的数据本地副本,如第1点所述?
显然我不能跨两个系统进行交易.我该如何避免这种情况?
如果我听起来很困惑,那是因为我.我不是在寻找上述问题的答案,只是指出将回答这个和类似问题的资源方向.
实现 IDbCommandInterceptor 时,我可以访问为命令/查询创建的 SQL 命令。是否还可以访问在实现的方法中持久/检索的实际实体对象?
这是一些幻想代码来演示我想做的事情:
public class WidgetInterceptor : IDbCommandInterceptor
{
public void NonQueryExecuting(System.Data.Common.DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{
var widget = interceptionContext.Entity as Widget;
if(widget != null)
{
//Perform tasks on widget before it is saved...
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法在Telerik RadScheduler中获取当前视图的日期范围?SelectedView告诉我,我是在看月,周等,但我怎么知道我正在看哪个月/周等?无论是那个还是StartDate和EndDate都不错.
最好知道所以我只加载数据库中的相关约会.
我在使用 NVDA 屏幕阅读器时遇到问题,因为它将在一个块中的同一行上读取所有元素。
例如,使用以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
<style>
nav > ul > li {
list-style: none;
display:inline-block;
}
</style>
</head>
<body>
<h1>Title 1</h1>
<nav role="navigation">
<ul>
<li>
<a href="#">Link 1</a>
</li>
<li>
<a href="#">Link 2</a>
</li>
<li>
<a href="#">Link 3</a>
</li>
<li>
<a href="#">Link 4</a>
</li>
</ul>
</nav>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这将在一行中显示所有导航链接,这在视觉上是正确的,但 NVDA 在浏览模式下,当使用箭头键滚动时,会将所有链接一起阅读。用户不能在每个单独的链接之间移动,这意味着不可能停留在一个链接上并选择它。
段落中间的链接也会发生同样的情况:
<p>NVDA will not stop on <a href="#">This link</a> so a user can select it.</a>
Run Code Online (Sandbox Code Playgroud)
在我的导航示例中,更改样式使每个链接位于单独的行上:
nav > ul > li {
list-style: none; …
Run Code Online (Sandbox Code Playgroud) 我在表单上使用jQuery不显眼的验证.某些字段是隐藏的,其中一些隐藏字段需要验证,而其他字段则不需要.我理解为了验证隐藏的字段,我可以这样做:
var validator = $("form").data("validator");
validator.settings.ignore = "";
Run Code Online (Sandbox Code Playgroud)
但这会验证所有隐藏的字段.如何指定应验证哪些隐藏字段?
继续这些辩论:
DDD - 实体不能直接访问 Repositories 的规则
在某些情况下,域访问存储库感觉更好。以这个例子为例,它假设我需要数据库中的 TaskStatus 表,其中包含用于报告目的的描述:
public class TaskStatus
{
public long Id {get;set;}
public string Description {get;set;}
}
public class Task
{
public long Id {get;set;}
public string Description {get;set;}
public TaskStatus Status {get;set;}
public void CompleteTask()
{
ITaskStatusReposity repository = ObjectFactory.GetInstace<ITaskStatusReposity>(); //Or whatever DI you do.
Status = repository.LoadById(Constants.CompletedTaskStatusId);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以拥有 CompletedTaskStatus 和 OpenTaskStatus 对象,但在某些情况下,这是不必要的,可能会导致类爆炸。
无论如何,如果不是这种事情,为什么存储库接口存储在域中?
architecture domain-driven-design ddd-repositories repository-pattern
我遇到一个问题,当我在Elasticsearch中使用match_phrase_prefix查询时,它没有返回我期望的所有结果,尤其是当查询是一个单词后跟一个字母时。
进行以下索引映射(这是保护敏感数据的人为示例):
http://localhost:9200/test/drinks/_mapping
Run Code Online (Sandbox Code Playgroud)
返回:
{
"test": {
"mappings": {
"drinks": {
"properties": {
"name": {
"type": "text"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在数百万其他记录中,还有:
{
"_index": "test",
"_type": "drinks",
"_id": "2",
"_score": 1,
"_source": {
"name": "Johnnie Walker Black Label"
}
},
{
"_index": "test",
"_type": "drinks",
"_id": "1",
"_score": 1,
"_source": {
"name": "Johnnie Walker Blue Label"
}
}
Run Code Online (Sandbox Code Playgroud)
以下查询,是一个单词,后跟两个字母:
POST http://localhost:9200/test/drinks/_search
{
"query": {
"match_phrase_prefix" : {
"name" : "Walker Bl"
}
}
}
Run Code Online (Sandbox Code Playgroud)
返回此:
{
"took": 1, …
Run Code Online (Sandbox Code Playgroud) architecture ×3
nhibernate ×2
.net ×1
alter-column ×1
asp.net ×1
c# ×1
dddd ×1
decorator ×1
distributed ×1
html ×1
interceptor ×1
jquery ×1
match ×1
messaging ×1
missing-data ×1
nvda ×1
querying ×1
radscheduler ×1
soa ×1
sql ×1
sql-server ×1
telerik ×1
varchar ×1