我想知道如果在表中不存在记录,是否有更简单的方法来插入记录.我还在尝试构建我的LINQ to SQL技能.
这就是我所拥有的,但似乎应该有一种更简单的方法.
public static TEntity InsertIfNotExists<TEntity>
(
DataContext db,
Table<TEntity> table,
Func<TEntity,bool> where,
TEntity record
)
where TEntity : class
{
TEntity existing = table.SingleOrDefault<TEntity>(where);
if (existing != null)
{
return existing;
}
else
{
table.InsertOnSubmit(record);
// Can't use table.Context.SubmitChanges()
// 'cause it's read-only
db.SubmitChanges();
}
return record;
}
Run Code Online (Sandbox Code Playgroud) 我到处看到的MVC样式路由示例是这样的:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
Run Code Online (Sandbox Code Playgroud)
将RouteTable.Routes集合传递给RegisterRoutes()的原因是什么?为什么不呢:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
public static void RegisterRoutes()
{
RouteTable.Routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
Run Code Online (Sandbox Code Playgroud)
除RouteTable.Routes之外的RouteCollection会添加一条路由吗?是不是RouteTable.Routes Web应用程序的 RouteCollection?
我有一个特殊的IRouteHandler,它有一个Map()方法:
public class ChatRouteHandler : IRouteHandler
{
private static bool mapped;
public void Map()
{
if (!ChatRouteHandler.mapped)
{
RouteTable.Routes.Add
(
new Route("chat/{room}/{date}",
new ChatRouteHandler())
);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有理由认为Map()应该接受RouteCollection而不是添加到RouteTable.Routes集合?再次,这个IRouteHandler会添加什么其他RouteCollection?
有人能告诉我为什么这个程序不会枚举任何项目?它与RDF名称空间有关吗?
using System;
using System.Xml.Linq;
using System.Xml.XPath;
class Program
{
static void Main(string[] args)
{
var doc = XDocument.Load("http://seattle.craigslist.org/sof/index.rss");
foreach (var item in doc.XPathSelectElements("//item"))
{
Console.WriteLine(item.Element("link").Value);
}
Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一些JSON数据,但它都在一条线上.有没有人知道将为我格式化(例如缩进和插入新行)这个数据的Web或Windows编辑器,所以我可以更好地阅读它?优选地,例如,使用GUI来显示JSON而不是输出重新格式化的文档的命令行工具.
当我上次编程时,我们试图将DataReaders传统的ADO.NET API转向对象关系映射(ORM).
为此,我们生成了一个DataContextDB通道sqlmetal.然后有一个瘦数据层DataContext private,而且需要访问数据库的任何代码都必须使用public此瘦数据层中的方法.这些方法基本上都是存储过程; 他们将通过LINQ to SQL对数据库执行查询.
这是今天常见的做法吗?我的意思是,每个使用.NET 3.5框架的人是否真的在构建过程中运行sqlmetal,或者是什么?这在当时几乎看起来像是一个黑客.
基本上,我想知道如果我今天要在不使用第三方开源ORM的.NET 3.5商店编写DAL,LINQ to SQL和sqlmetal是否可以预期.
在设计集合类时,有没有理由不私下实现锁定以使其线程安全?或者我应该将该责任留给收藏的消费者?
我在页面中有一个特别大的表单.验证表单并且字段无效时,我想将窗口滚动到该控件.调用控件的Focus()似乎不会这样做.我找到了一个JavaScript解决方法来将窗口滚动到控件,但是ASP.NET内置了什么?
我有一个ApiController有10个公共方法的课程.
在这10种方法中,有9种需要[Authorize(Roles="Admin")].没有的,不需要任何授权.
如果不是那个不需要授权的单一方法,我会ApiController用[Authorize(Roles="Admin")].
而不是在班级,我用相同的方法装饰所有九个方法,[Authorize(Roles="Admin")]而不是用一个方法来装饰那个单一的方法[Authorize(...)].
我不喜欢这个是我必须重复[Authorize(Roles="Admin")]九次.
有没有办法我可以用它来装饰类[Authorize(Roles="Admin")],并且只[Authorize(Roles="Admin")]用一个属性来装饰不应该有的单个方法,这意味着"不要为这个特定的方法应用类级动作过滤器"?
假设我有这个:
PriorityType? priority;
string userInput = ...;
Run Code Online (Sandbox Code Playgroud)
我无法改变PriorityType? priority它的定义:因为它实际上是与另一段代码的合同的一部分。
我试过这个,但它不起作用:
if (Enum.TryParse<PriorityType?>(userInput, out priority)) {
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法?
当我尝试创建一个具有某些ISO 3166国家代码的新RegionInfo(孟加拉国的"BD",索马里的"SO",斯里兰卡的"LK"),我得到一个ArgumentException,表示它无法识别.
这是怎么回事?RegionInfo的Intellisense(字符串)表示它符合ISO 3166,但不支持这些国家/地区代码?
我不明白.
c# ×7
.net ×2
asp.net-mvc ×2
linq-to-sql ×2
asp.net ×1
collections ×1
controls ×1
database ×1
enums ×1
focus ×1
java ×1
json ×1
linq ×1
linq-to-xml ×1
nullable ×1
regioninfo ×1
routes ×1
routetable ×1
scroll ×1
xml ×1
xpath ×1