使用下面的简单示例,使用Linq to SQL从多个表返回结果的最佳方法是什么?
说我有两张桌子:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
Run Code Online (Sandbox Code Playgroud)
我想用他们的狗归还所有的狗BreedName.我应该让所有的狗使用这样的东西没有问题:
public IQueryable<Dog> GetDogs()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select d;
return result;
}
Run Code Online (Sandbox Code Playgroud)
但如果我想要品种的狗并尝试这个我有问题:
public IQueryable<Dog> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result; …Run Code Online (Sandbox Code Playgroud) 我继承了一个Web应用程序,我刚刚在SQL Server数据库中以纯文本形式存储了超过300,000个用户名/密码.我意识到这是一件非常糟糕的事情.
知道我必须更新登录和密码更新过程以加密/解密,并且对系统其余部分的影响最小,您会建议从数据库中删除纯文本密码的最佳方法是什么?
任何帮助表示赞赏.
编辑:对不起,如果我不清楚,我打算问你的加密/哈希密码的程序,而不是特定的加密/散列方法.
我应该只是:
我想我的关注更多来自于大量的用户,所以我想确保我正确地做到这一点.
假设我有一个方法将某种对象作为参数.现在说如果这个方法传递一个null参数,那就是一个致命的错误,应该抛出一个异常.编写这样的代码对我来说是否值得(请记住这是一个简单的例子):
void someMethod(SomeClass x)
{
if (x == null){
throw new ArgumentNullException("someMethod received a null argument!");
}
x.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
或者,当它调用x.doSomething()时,依赖它抛出NullException是否安全?
其次,假设someMethod是一个构造函数,在调用另一个方法之前不会使用x.我应该立即抛出异常还是等到需要x然后抛出异常?
我还在学习Knockout的正确使用方法,并且我发现自己ko.observable在设置我的viewmodel时很快就远离了键入,而只是定义了一个对象文字,并通过映射插件传递给它
var viewModel = ko.mapping.fromJS(data);
Run Code Online (Sandbox Code Playgroud)
或者至少,将所有数据填充到viewModel上的属性中,就像这样
var viewModel = {
... events etc ... ,
"data": ko.mapping.fromJS(data)
}
Run Code Online (Sandbox Code Playgroud)
说实话,我一直这样做的主要原因是为了解决必须打字ko.observable和ko.observableArray重复的问题.我只是想弄清楚这是否是一个好方法,如果有任何缺点,将var x = ko.observable()所有特定声明放在一起.此外,我正在加载所有这些,而不是响应任何ajax调用等,从我可以看出,这是映射插件的设计目的.
在使用knockout的工作中,你是否仍然手动逐个声明observable,或者你使用了我使用的mapping.fromJS方法?像这样经常使用映射插件有什么特别的缺点吗?
编辑:
在本文中,Steve通过这样做来设置他的viewModel
var initialData = [ { ... } , { ... } ]; // json from the serializer
var viewModel = {
gifts : ko.observableArray(initialData)
};
Run Code Online (Sandbox Code Playgroud)
通常,我也只是ko.mapping.fromJS用于这种情况,特别是为了确保数组中的对象也被转换为可观察对象.看看他做了什么,我的做法似乎有些过度,并增加了一些不必要的开销.
我希望在WCF Web服务的datacontract中有一个枚举.
我正在尝试使用
[DataContract]
class myclass
{
[DataMember]
public int id {get; set;}
[DataContract]
public enum myenum
{
[EnumMember]
a,
[EnumMember]
b
}
}
Run Code Online (Sandbox Code Playgroud)
但我无法访问wcf客户端的枚举.请让我知道我做错了什么.
我有一个表单的电子邮件主题:
=?utf-8?B?T3.....?=
Run Code Online (Sandbox Code Playgroud)
电子邮件的正文是utf-8 base64编码 - 并且解码得很好.我目前正在使用Perl的Email :: MIME模块来解码电子邮件.
=?utf-8分隔符的含义是什么?如何从此字符串中提取信息?
冒着成为村里白痴的风险,有人可以向我解释为什么仿制药被称为仿制药吗?我理解它们的用法和好处,但如果泛型的定义是"通用的"而泛型集合是类型安全的,那么为什么这不是用词不当呢?
例如,ArrayList可以保存任何对象:
ArrayList myObjects = new ArrayList();
myObjects.Add("one");
myObjects.Add(1);
Run Code Online (Sandbox Code Playgroud)
而字符串类型的泛型集合只能包含字符串:
var myStrings = new List<string>();
myStrings.Add("one");
myStrings.Add("1");
Run Code Online (Sandbox Code Playgroud)
我不清楚为什么它被称为"通用".如果答案是"......这使得设计类和方法可以推迟一个或多个类型的规范,直到通过客户端代码声明和实例化类或方法." 从这里开始,我认为这是有道理的.也许我有这种精神失误,因为我只是在Java引入泛型之后开始编程,所以我不记得他们之前的时间.但还是......
任何帮助表示赞赏.
我正在试验Linq并且无法搞清楚分组.我已经完成了几个教程,但由于某种原因无法弄清楚这一点.
例如,假设我有一个包含多个网站ID的表(SiteStats),该表存储了按类型访问每个网站的访问者总数和过去30天的计数.
????????????????????????????????????????
? SiteId ? VisitorType ? Last30 ? Total?
????????????????????????????????????????
? 1 ? 1 ? 10 ? 100 ?
? 1 ? 2 ? 40 ? 140 ?
? 2 ? 1 ? 20 ? 180 ?
????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
在SQL中,我可以使用以下内容轻松获取SiteID 1的计数:
SELECT SiteId,
SUM(Last30) AS Last30Sum
FROM Sites
WHERE SiteId = 1
GROUP BY SiteId
Run Code Online (Sandbox Code Playgroud)
并且应该排成一排......
???????????????????????
? SiteId ? Last30Total?
???????????????????????
? 1 ? 50 ?
???????????????????????
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何使用Linq获得此结果.我试过了:
var statsRecord = from ss in db.SiteStats
where ss.SiteId == …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET MVC 2网站(VS2010),我已升级到ASP.NET MVC 3(VS2012),这可以在本地IIS7上运行,但在发布时我在主机上得到此异常:
Could not load file or assembly 'System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
在一些seartch之后,我发现这表明我应该在一些引用上设置CopyLocal(包含System.Web.WebPages)并且还使用VS2012中的发布工具,但这会产生以下异常?
Could not load file or assembly 'System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
我找不到任何部署DLL来设置copyLocal?
我该怎么解决这个问题?
c# ×4
.net ×2
linq ×2
asp.net-mvc ×1
email ×1
encryption ×1
exception ×1
generics ×1
header ×1
hosting ×1
iis ×1
javascript ×1
knockout.js ×1
linq-to-sql ×1
mvvm ×1
passwords ×1
perl ×1
security ×1
semantics ×1
utf-8 ×1
wcf ×1
web-services ×1