小编Bri*_*per的帖子

实体框架VS LINQ to SQL VS ADO.NET与存储过程?

你会如何评价每一个:

  1. 性能
  2. 发展速度
  3. 整洁,直观,可维护的代码
  4. 灵活性
  5. 总体

我喜欢我的SQL,因此一直是ADO.NET和存储过程的忠实粉丝,但我最近玩过Linq to SQL,并且被写出我的DataAccess层的速度和决定花费的速度感到震惊有一段时间真正理解Linq to SQL或EF ......或者两者都没有?

我只是想检查一下,这些技术中没有一个很大的缺陷会让我的研究时间变得毫无用处.例如,性能非常糟糕,对于简单的应用程序来说它很酷,但只能带你到目前为止.

更新: 您可以专注于EF VS L2S VS SP而不是ORM VS SP.我主要对EF VS L2S感兴趣.但我很想将它们与存储过程进行比较,因为普通的SQl是我所了解的很多东西.

sql ado.net linq-to-entities entity-framework linq-to-sql

424
推荐指数
4
解决办法
17万
查看次数

为 DTO 使用可空引用类型的最佳实践

我有一个 DTO,它是通过从 DynamoDB 表中读取来填充的。说它目前看起来像这样:

public class Item
{
    public string Id { get; set; } // PK so technically cannot be null
    public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks
    public string Description { get; set; } // can be null
}
Run Code Online (Sandbox Code Playgroud)

是否有任何最佳实践来处理这个问题?我宁愿避免使用非无参数构造函数,因为它与 Dynamo SDK(以及其他)中的 ORM 的关系很差。

写起来对我来说似乎很奇怪,public string Id { get; set; } = "";因为这永远不会发生,因为它Id是一个 PK 并且永远不会为空。""即使它以某种方式做了,又有什么用呢?

那么这方面有什么最佳实践吗?

  • 我是否应该将它们全部标记为string?说它们可以为空,即使有些永远不应该。 …

c# non-nullable c#-8.0 nullable-reference-types

31
推荐指数
2
解决办法
6115
查看次数

更新我的模型然后重新评估IsValid?

我将一些值传递给我的控制器动作,一切都很好.POST设计中将缺少两个属性.

然后我设置缺失的值,但后来我想验证模型,它仍然是假的,因为看起来ModelState没有赶上我的更改.

[HttpPost, Authorize]
public ActionResult Thread(int id, string groupSlug, Comment comment, string submitButton)
{
  comment.UserID = UserService.UID;
  comment.IP = Request.UserHostAddress;
  UpdateModel(comment); //throws invalidoperationexception
  if (ModelState.IsValid) // returns false if i skip last line
  {
    //save and stuff
    //redirect
  }
  //return view
}
Run Code Online (Sandbox Code Playgroud)

什么是最简洁的方法来轻拍模型状态并告诉它一切都会好的,同时仍然验证从用户的POST绑定的所有其他内容

asp.net-mvc

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

今天在.NET中实现RESTful架构的最佳方法是什么?

在你提到它之前我知道这个问题之前已被问过,但自从WCF4推出以来就没有!

因此,经过大量阅读后,我认为RESTful架构是开始数据提供API的前进方向.考虑到发布WCF 4,ASP.NET MVC 2和WCF REST入门套件,现在开始实施RESTful架构的最佳方法是什么?

我:我对ASP.NET MVC非常熟悉,所以我觉得很舒服.但是,我对WCF的了解却很少.

那么WCF4还是ASP.NET MVC?(或其他类似wcf rest starter kit)?具体来说我正在寻找:

  • 易于实施
  • 我知道ASP.NET MVC,而不是WCF.WCF值得学习吗?
  • WCF4对于REST是否过度,或者ASP.NET MVC会在某些时候出现问题?

rest asp.net-mvc wcf

17
推荐指数
3
解决办法
3561
查看次数

Razor vs Webforms查看新ASP.NET MVC 3站点的引擎

剃刀更漂亮(因此很酷).

Webforms是我已经熟悉的东西.

当然,我毫无疑问会去学习新东西 - 剃刀.但我听说有两个让我担心的缺点:

  • 不能轻易地重用现有的Web表单控件 - 在极少数情况下我可能需要拖动一些东西...我会重申 - 'RARE'
  • 我听说渲染效率较低(比Web表单花费的时间更长)

那么使用ASP.NET MVC 3时Razor优于Webforms视图引擎的优势是什么?

asp.net-mvc viewengine razor asp.net-mvc-3

13
推荐指数
1
解决办法
3万
查看次数

使用NOT等于约束的ASP.NET路由

我有这样的路线:

routes.MapRoute
    (
    "Profile",
    "profile/{username}",
    new { controller = "Profile", action = "Index" },
    new { username = @"^(getmoreactivity)" }
    );
Run Code Online (Sandbox Code Playgroud)

这适用于所有用户,我有一种情况,我想要针对getmoreactivity点击一个动作.所以我想制定这个约束来说明当用户名不是getmoreactivity时.它只是没有工作.

我坚持使用RouteDebugger并尝试@"[^(getmoreactivity)]"@"^^(getmoreactivity)"@"^ getmoreactivity"@"[^ getmoreactivity]".好吧,我尝试了无数的东西,但没有解决我的问题.

你到底怎么对整个单词施加NOT约束?

asp.net asp.net-mvc routing asp.net-routing asp.net-mvc-routing

8
推荐指数
1
解决办法
4105
查看次数

在.NET 4.5 Azure部署中找不到编译器可执行文件csc.exe

我有一个网站,和工作原理:

  • ASP.NET 4
  • MVC 3
  • 实体框架4.3
  • 在Azure Web角色中运行(我注意到它是osFamily ="1",这很奇怪,因为我预计它会是2 - 但无论如何......)
  • Azure SDK 1.7

我已经升级了我的整个代码库,以便与大量新玩具保持同步.现在它是:

  • ASP.NET 4.5
  • MVC 4(剃刀2)
  • 实体框架5
  • Azure配置设置为osFamily ="3"
  • Azure SDK 1.8(存储客户端库精心升级到2而不是1.7)

当我在分期中访问该网站时,我得到一个黄色的死亡屏幕,说无法找到编译器可执行文件csc.exe.我的问题是为什么?

它在本地工作正常,在发布模式下也是如此.我转发了,实例肯定在运行Windows Server 2012(因此.NET 4.5?我已经看到它很难说,因为.NET 4.5替换了.NET 4文件夹中的.NET 4程序集).

根据响应头,它肯定运行IIS 8,但有趣的是它声称X-ASPNET-VERSION是4.xxxx.这对于ASP.NET 4站点来说是正常的吗?

更新:

我将.NET 4框架作为目标,并将osFamily更改为2,现在可以使用了.所以我现在怀疑我有一个使用.NET 3.5或2的第三方程序集(事实上我确定我这样做)但是当针对比导入程序集中引用的.NET框架更高的.NET框架时,使用更高版本的框架??

osFamily ="3"只安装了.NET 4和4.5,所以我猜这是错误的原因,但我不是关于定位的事情吗?我想用osFamily ="3"我能在这做什么?

堆栈跟踪

[InvalidOperationException: Compiler executable file csc.exe cannot be found.]
   System.CodeDom.Compiler.RedistVersionInfo.GetCompilerPath(IDictionary`2 provOptions, String compilerExecutable) +8675071
   Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames) +739
   Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources) +3293761
   Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources) +64
   HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.Compile(String …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc azure .net-4.5 windows-server-2012

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

您是否需要2个Azure网站实例用于SLA,如Web角色?

在云服务Web角色上,您必须创建至少2个实例才能获得Azure的99.95%SLA,因为当他们对服务器的操作系统等进行更新时,Azure将需要重新启动计算机(一次一个).这有很好的文档记录,当运行一个实例Web角色来执行此操作时,您将被门户网站大喊.

使用Azure网站,您不会收到此类警告,我找不到任何建议为99.9%SLA提供2个实例的文档.不过,我也无法找到任何文件说,你不要需要2个实例此SLA.

那是哪个呢?我是否需要2个Azure网站的SLA实例,比如Web角色,或者这是过去的事情吗?

.net azure azure-web-roles azure-web-sites

8
推荐指数
2
解决办法
4202
查看次数

实体框架中存储过程的映射是全有或全无的?(FUNCTIONMAPPING)

我收到了错误

在映射文件中找不到EntityType'xxx'的InsertFunctionMapping.

这是公平的,因为它是真的.但那是因为我很高兴EF为我做插入.我只是想覆盖删除功能.

我认为这是EF4的改进之一?或者只是它会建立良好但仍然在使用未映射的函数时哭泣?或者它是否可能,但我只是缺少一些东西?

stored-procedures entity-framework entity-framework-4

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

我可以在实体框架中混合每个层次结构的表和每种类型的表吗?

假设我有2个表:Message和SuperMessage

和3个实体:消息(基础(不是抽象)),注释(继承自Message)和SuperMessage(继承自Message)

消息具有不可为空的MessageType字段,该字段用作鉴别器.

  • MessageType = 1表示它是一条消息
  • MessageType = 2表示它是一个Comment
  • MessageType = 3 AND并加入SuperMessage意味着它是一个SuperMessage

问题是我无法在SuperMessage的Mapping详细信息部分的MessageType上指定条件,因为它无法看到MessageType字段,我无法忽略它.

我怎样才能让这些与彼此并肩作战呢?

更新构建错误:

错误3014:映射片段中的问题:外键"外键约束"FK_SuperMessage_inherits_Message'从表SuperMessage(ID)到表Message(MessageId):'未在模型中强制执行.需要创建关联或继承关系以强制执行此约束.

linq-to-entities entity-framework entity-framework-4

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