DataAnnotations与IDataErrorInfo
两者的优点和缺点?一个优于另一个的好处?(特别是与MVC有关)
我在数据库(SQL Server 2005)中有一个列,其末尾的数据为"\ 0".在SQL Server中查询时,此字符不可见,并且"似乎"不存在.当我查看我的C#代码时,角色就在那里.此字符在我们的网站上导致错误,我们需要从所有受影响的行中删除它.
是否有一个SQL查询我可以编写以轻松从受影响的所有记录中删除此字符?我可以获取所有受影响的记录,但我没有办法将记录更新为新值(没有"\ 0").
更新:这似乎工作:
Select * from TABLE
where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0
Run Code Online (Sandbox Code Playgroud)
所以:
Update TABLE
SET naughtyField = SUBSTRING(naughtyField, 1, LEN(naughtyField) - 1)
where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0
Run Code Online (Sandbox Code Playgroud) 我看到这个术语常用,就好像在讨论面向OO语言的MVC时两者之间有一个具体的区别.从我从上下文中得到的是,商业模型执行一个动作来改变数据模型.这是表达差异的正确方法吗?
我想让我感到困惑的是,大多数模型的例子都混合了这两种角色,表面上看起来很自然.通常,更改对象状态的方法位于这些对象本身内部.我想我无法想出一个如何在现实世界中运作的例子.更改对象的方法在该对象内部似乎更自然.任何人都可以更清楚地解释一下吗?
为什么这样做:
public IList<ICoupon> GetCouponsForSite(string siteSlug)
{
var coupons = _db.Coupons.Where(x => x.Site.slug == siteSlug)
.Select(x => new Coupon(x.id));
var list = new List<ICoupon>();
foreach (var coupon in coupons)
{
list.Add(coupon);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
但这确实不起作用(错误 - 无法将表达式转换为返回类型):
public IList<ICoupon> GetCouponsForSite(string siteSlug)
{
return _db.Coupons.Where(x => x.Site.slug == siteSlug)
.Select(x => new Coupon(x.id)).ToList();
}
Run Code Online (Sandbox Code Playgroud) 我有一个select语句,它返回一个充满SELECT语句的表(它遍历每个表中的每一列,并创建一个select来查找该列是否包含任何错误数据).
我需要将此表充满SELECT语句,执行它们,并查看它们是否返回行.如果count(*)> 0,那么我想打印出一些数据.
我以为我必须使用光标,但我不知道如何实现这一目标.
这是我的代码来获取坏数据的计数.
SELECT 'SELECT count(*), '' '+sysobjects.name + ' - ' + syscolumns.name +
' '' FROM ['
+sysobjects.name + '] WHERE UNICODE(SUBSTRING(['+syscolumns.name+'],Len(['+syscolumns.name+']),1)) = 0'
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON syscolumns.xtype=systypes.xtype
WHERE sysobjects.xtype='U' and systypes.name IN ('varchar', 'nvarchar')
ORDER BY sysobjects.name,syscolumns.colid
Run Code Online (Sandbox Code Playgroud)
这将返回一个包含以下行的表:
SELECT count(*), ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
Run Code Online (Sandbox Code Playgroud)
我需要执行这个select,如果count(*)> 0,则打印第二列. 除非有数据要显示,否则我不想在结果或消息中显示任何内容.
我有一个强类型的Item类Item.在我的控制器中,我需要发送两个不同的List.除了创建一个包含两个List的新类之外,还有更简单的方法吗?
我最终要做的是在我的主页上有10个按日期订购的商品,以及10个按商品订购的商品.
我做了什么
我实际上结合了两个答案.我强烈地将我的View输入到我用两个列表创建的新类中.然后,我强烈地为每个列表键入两个部分视图.可能看起来有点矫枉过正,但我喜欢它的结果.
这是我的一个例子(采用Stack Overflow).我有2张桌子,Questions和Answers.我也有一张Comments桌子.评论表将引用问题和答案.
我该如何设置数据库?在Comments,QuestionId和AnswerId中有2列.有一个问题和答案的表?介于两者之间,以某种方式告诉我问题或答案?
编辑:找到SO数据资源管理器,它使用一个表来解决问题和答案...我只是不喜欢POSTS有这么多NULLS 的表.这会产生任何负面影响吗?
刚刚听说过T4MVC但我无法在我的示例项目(ASP.NET MVC 2,Visual Studio 2008)中使用它.
在尝试构建项目时,我得到以下错误:
错误1命名空间'Northwind.Web.MVC'中不存在类型或命名空间名称'Account'(您是否缺少程序集引用?)C:\ Users\Bruno\Documents\My Dropbox\Projetos.NET\Northwind\Northwind.Web.MVC\AccountController.generated.cs 38 61 Northwind.Web.MVC
这是发生错误的地方:
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public AccountController Actions { get { return MVC.Account; } }
Run Code Online (Sandbox Code Playgroud)
我真的很讨厌魔术弦乐,所以请帮助我让它发挥作用!
当MVC第一次出现时,我每天都在阅读它,并尽我所能地学习它.大约在MVC 2 RC2出现的时候,我因各种原因(新房子,新工作,懒惰)而停止学习.
我现在想回到MVC ......我有一个半写的博客我想完成,但是当涉及到任何MVC时我感到生疏.任何人都可以提供一些关于MVC进修课程的良好链接吗?我不需要从头学习,但我想刷新,然后了解从MVC 2 RC2到MVC 3的变化.
编辑:任何人都知道MVC 3即将发布时的ETA?我应该将当前的MVC 2项目转换为MVC 3 ...还是等待RC?
我想在Windows Phone 7.1中创建一个像IE一样的应用程序栏...它有一个文本框而不是按钮,它仍然作为应用程序栏,下面有菜单项.
这可能吗.我在Shell命名空间下看不到任何内容,只是在应用程序栏中添加一个Grid无效.
asp.net-mvc ×3
database ×2
sql ×2
sql-server ×2
.net ×1
c# ×1
data-objects ×1
dynamic-sql ×1
interface ×1
linq ×1
oop ×1
t4mvc ×1
validation ×1