我总是使用直接数据访问来处理过去的对象(手动运行查询,并将结果映射到数据对象).我知道微软目前正在推动EF让客户用来查询数据对象.
对于社区,我有几个问题: -
如果你有一个复杂的数据库,即几百个表,相当数量的存储过程,视图,一切都在3NF.管理两个模式(一个本地EF模式映射和一个数据库)的负担值得权衡吗?
一旦开始加速数据访问,缓存如何在两者上进行比较?我知道在直接访问中你可以实现你想要的任何形式的缓存,EF是否允许类似的东西?
考虑到微软在大力推销产品并让人们为他们写信之后杀掉产品的历史(SQL-NS,Linq-to-Sql),这对EF来说有多大可能?
正如我所说,我目前正在大量使用直接访问,但考虑到迁移(即新的查询未来,还没有回溯它们),并且正在寻求社群其他人对他们观点的建议.
如果我正在使用包含强类型对象的ViewBag,MVC Razor是否有任何方法可以定义(或转换)以使其中的所有元素都出现在IntelliSense中?
比如说我有
ViewBag.Movies.Name
ViewBag.Movies.Length
Run Code Online (Sandbox Code Playgroud)
我知道电影是对象类型电影,其成员名称和长度
class Movie {
public string Name {get; set;}
public string Length {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式投射这个,就像我为模型做的那样
@model Transactions.UserTransactionDetails
Run Code Online (Sandbox Code Playgroud)
电影的成员可以在Razor中使用吗?
所以我试图在控制器中获取模型对象的密钥,以便我可以添加一个AddModelError.
在我看来,我用
@Html.ValidationMessageFor(model => model.Email)
Run Code Online (Sandbox Code Playgroud)
什么是等效的代码来获取Key在控制器中添加的名称,以便它附加到此ValidationMessage.
所以我在ASP.NET MVC中创建了一个注册页面,并且根据许多条件(从数据库中获取)改变了一个字段列表.
每次更新数据库时,在没有代码更改的情况下,在视图上显示这些字段的最佳方法是什么.
我正在考虑的当前系统是使用"Name,DataType"创建一个字典,然后只是遍历列表并为每个名称添加一个新的输入类型(使用数据类型的开关来获取正确的编辑器).但它似乎是一种老式的,并没有充分利用.NET MVC系统的好处(例如验证,默认值,特定内容的自定义编辑器).
有没有一种方法我可能不会在.NET中意识到处理这个问题?
因此,在使用.NET Membership系统的MVC中,密码策略在web.config文件中定义.例如,minPasswordLength在membership - >配置文件中定义.
使用View时,可以使用该@Membership组件访问它
Passwords must be at least @Membership.MinRequiredPasswordLength characters long.
Run Code Online (Sandbox Code Playgroud)
但是,如果您查看示例MVC应用程序中的默认模型,它会说
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New Password")]
public string NewPassword { get; set; }
Run Code Online (Sandbox Code Playgroud)
我很好奇的部分是MinimumLength = 6因为这是硬编码的,这意味着如果我想更新密码长度,我不仅要编辑web.config(如Microsoft建议),还要搜索任何引用它在源头并在各处变化(可能不是最好的编程实践).
有没有在Attributes中使用变量的方法.我怀疑不是因为这可能发生在编译时而不是运行时.如果没有人知道更好的模式,以阻止我在将来找到替换所有引用?
我似乎无法为这一个找到明确的答案.
使用exec()PHP 调用shell命令时,shell命令使用的内存是否计入PHP脚本的内存限制?
我意识到,如果该命令生成大量输出,并且该输出是在$ouput(第二个)参数中捕获的exec(),那么返回的数据可能会破坏PHP内存限制.但是,假设所有输出都发送到文件,如果该exec()命令需要运行128M内存,那么具有64M内存限制的PHP脚本是否能够运行它?
<?php
exec('command_using_128M_memory >/dev/null 2>&1');
Run Code Online (Sandbox Code Playgroud)
我假设PHP5.3 +
我试图检查是否有任何结果是从实体框架查询返回之前采取行动,我正在尝试使用代码: -
var shoppingCartSessions = from c in context.ShoppingCartSessions where c.UserId == gUserID select c;
if (shoppingCartSessions.First() != null)
{
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误
序列不包含任何元素
我已经检查了堆栈,发现我可以替换.First,.FirstOrDefault但是我想检查这是否是检查元素是否存在的正确方法.有没有更好的方法而不是尝试获取项目然后检查它?
是否可以向现有的DataAnnotations中添加新的数据类型(我不是在寻找验证器而是原始数据类型)。例如
弯腰你有
[DataType(DataType.Html)]
public string Footer {get; set;}
Run Code Online (Sandbox Code Playgroud)
并添加到混合中 ~Views/Shared/EditorTemplates/Html.cshtml
我希望能够添加[DataType(DataType.CSS)],从理论上讲,我可以使用a UIHint来添加特定视图,但是如果可能的话,我想在更早的阶段进行操作并指定数据类型,而不是依赖于UI提示。
任何指针将不胜感激。快速搜索SO似乎对自定义元数据类型,自定义验证器和多个数据类型有很多答案,但是我似乎找不到用于添加新核心数据类型的方法。
所以我想说我有一个对象
class MyItem
{
public string Name {get; set;}
public string Description {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个ViewModel
class MyItemViewModel
{
public string Name {get; set;}
public string Description {get; set;}
public string Username {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我想在控制器上获取MyItem类型的对象并自动填充ViewModel.使用MyItem中包含的值(即,如果它具有名为Name的属性,则自动填充它).
我想避免的是Model.Name = Item.Name行列表.MyItemViewModel也将具有不同的属性和显示值,因此我不能简单地在视图模型中嵌入MyItem.
是否有一种干净的程序化方法来复制对象之间相同名称和类型的属性,或者我是不是手工操作?
我要做的是char*使用类似于下面的语法创建一个新的printf:
char* myNewString = XXXXprintf("My string says %s", myFirstString);
Run Code Online (Sandbox Code Playgroud)
如果不打印到输出流,这是否可行?
c# ×8
asp.net-mvc ×5
ado.net ×1
asp.net ×1
c ×1
exec ×1
linq ×1
memory ×1
php ×1
polymorphism ×1
printf ×1
razor ×1
string ×1
validation ×1
viewbag ×1