在使用using() {}如下所示的(sic)块时,并假设cmd1它不在第一个using() {}块的范围之外,为什么第二个块会抛出一个带有消息的异常
SqlParameter已包含在另一个SqlParameterCollection中
这是否意味着资源和/或句柄 - 包括SqlParameterCollection附加的参数() - cmd1在块的末尾被销毁时不会被释放?
using (var conn = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True"))
{
var parameters = new SqlParameter[] { new SqlParameter("@ProductId", SqlDbType.Int ) };
using(var cmd1 = new SqlCommand("SELECT ProductName FROM Products WHERE ProductId = @ProductId"))
{
foreach (var parameter in parameters)
{
cmd1.Parameters.Add(parameter);
}
// cmd1.Parameters.Clear(); // uncomment to save your skin!
}
using (var cmd2 = new SqlCommand("SELECT Review FROM ProductReviews WHERE ProductId …Run Code Online (Sandbox Code Playgroud) AutoMapper可以"说服"暂时暂停特定的映射吗?
为了说明我想要完成什么,我将使用一个插图.假设我有一个存储库StudentRepository,它使用LINQ与学生,课程,活动,俱乐部等数据库对象(表)进行交互.在应用程序方面,有匹配的域对象Student,Course,Activity,Club.Student类包含类型为Course,Activity和Club的数组成员,如:
public class Student
{
// ... more members
public Course[] Courses { get; set; }
public Activity[] Activities { get; set; }
public Club[] Clubs { get; set; }
// ... even more members
}
Run Code Online (Sandbox Code Playgroud)
AutoMapper配置为将数据库对象映射到域对象,其中映射在StudentRepository的静态构造函数中定义,如:
public class StudentRepository : IStudentRepository
{
static class StudentRepository
{
// ... other mappings
Mapper.CreateMap<TableStudent, Student>()
.ForMember(dest => dest.Courses, opt => opt.MapFrom(src => Mapper.Map<IEnumerable<Course>>(src.TableCourses)))
.ForMember(dest => dest.Activities, opt => opt.MapFrom(src => Mapper.Map<IEnumerable<Activity>>(src.TableActivities)))
.ForMember(dest => dest.Clubs, opt => opt.MapFrom(src => Mapper.Map<IEnumerable<Clubs>>(src.TableClubs))) …Run Code Online (Sandbox Code Playgroud) 可能重复:
使用LINQ保留顺序
假设我有以下Person类进一步用于声明一个数组Person:
public class Person
{
public int Id { get;set; }
public string Name { get; set; }
public int Age { get; set; }
}
var persons = new[] {
new Person { Id = 1, Name = "John", Age = 40 },
new Person { Id = 2, Name = "John", Age = 30 },
new Person { Id = 3, Name = "John", Age = 35 },
};
Run Code Online (Sandbox Code Playgroud)
我使用以下LINQ 扩展方法Age …
在LINQ中,可以逐步构建LINQ查询,如下所示:
var context = new AdventureWorksDataContext();
// Step 1
var query = context.Customers.Where(d => d.CustomerType == "Individual");
// Step 2
query = query.Where(d => d.TerritoryID == 3);
Run Code Online (Sandbox Code Playgroud)
上面的查询将产生一个等效的SQL语句,其WHERE子句包含由AND逻辑运算符组合在一起的两个谓词,如下所示:
SELECT * FROM Customers WHERE CustomerType = 'Individual' AND TerritoryID = 3
Run Code Online (Sandbox Code Playgroud)
是否可以构建LINQ查询以生成等效的SQL语句,progressively以便生成的查询具有WHERE子句,其中谓词由OR逻辑运算符组合在一起,如下所示?
SELECT * FROM Customers WHERE CustomerType = 'Individual' OR TerritoryID = 3
Run Code Online (Sandbox Code Playgroud) 这是一种我只是错误地了解的行为.SQL Server中的表有一个UNIQUEIDENTIFIER列,我运行了一个查询:
SELECT * FROM Tbl WHERE GuidColumn = N'2B375CD8-D210-463F-A2FD-EAFB0D643664#1'
Run Code Online (Sandbox Code Playgroud)
Guid末尾的#1错误地到达了那里,因为我从附加#1,#2,#3等的URL复制粘贴它,表示分页.
让我感到惊讶的是,查询运行得很好,我得到了与运行时相同的结果:
SELECT * FROM Tbl WHERE GuidColumn = N'2B375CD8-D210-463F-A2FD-EAFB0D643664'
Run Code Online (Sandbox Code Playgroud)
有谁知道在这种情况下如何解释#和之后的任何内容?
这是微不足道的,可能是愚蠢的,但我需要了解在您尝试打印初始化为'\ 0'(或0)的字符指针的内容后,状态cout是什么.看一下以下片段:
const char* str;
str = 0; // or str = '\0';
cout << str << endl;
cout << "Welcome" << endl;
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,第4行在尝试在第3行打印str之后不会将"欢迎"打印到控制台.是否有一些我应该注意的行为?如果我用cout <<'\ 0'<< endl;替换第1-3行; 以下行中的"欢迎"消息将成功打印到控制台.
注意:第4行无声打印无法打印.没有警告或错误消息或任何东西(至少不使用MinGW(g ++)编译器).当我使用MS cl编译器编译相同的代码时,它会引发异常.
编辑:为了消除代码在将str分配给'\ 0' 时失败的概念,我修改了代码以分配给0 - 这是以前评论过的
给定启用事务流的事务感知绑定和具有TransactionFlowOption.Allowed的操作Op1,是否可以使从操作Op1调用的不同操作Op2不参与事务,使得任何操作Op2永远不会回滚以防万一操作失败Op1
插图
// Op1: LogOnUser
OperationBehavior(TransactionScopeRequired = true)]
public bool LogOnUser(String username, String password)
{
// AuditWriteProxy declaration and instantiation
var valid = false;
/* Validation logic */
// If validation failed
if(!valid)
{
// Invoke an op in an Audit Service.
// Op2 = AuditService.Write
// **MUST NOT BE ROLLED BACK EVEN AFTER WE [throw]**
AuditServiceProxy.Write("Authentication failed for user " + username);
throw new FaultException<AuthenticationFault>("Validation failed");
// After throw, we expect everything transactional to rollback
}
AuditServiceProxy.Write("User " + …Run Code Online (Sandbox Code Playgroud) 为什么某些编译器会坚持要求模板基类的成员公共成员,而非模板类不需要相同?请查看以下代码清单:
模板类:
#include <iostream>
using namespace std;
template <class T>
class TestImpl {
public: // It wont make a difference even if we use a protected access specifier here
size_t vval_;
TestImpl(size_t val = 0) : vval_(val) { }
};
template <class T>
class Test : public TestImpl<T> {
public:
Test(size_t val) : TestImpl<T>(val) {
cout << "vval_ : " << vval_ << endl; // Error: vval_ was not declared in this scope
//! cout << "vval_ : " << …Run Code Online (Sandbox Code Playgroud) 有人能帮我理解吗?当我可以,我通常在SQL语句中避免(*).好吧,今天是回报.这是一个场景:
CREATE TABLE Tbl (Id INT IDENTITY(1, 1) PRIMARY KEY, Name NVARCHAR(16))
INSERT INTO Tbl VALUES (N'John')
INSERT INTO Tbl VALUES (N'Brett')
INSERT INTO Tbl VALUES (NULL)
Run Code Online (Sandbox Code Playgroud)
我可以指望的记录数,其中Name是NULL如下:
SELECT COUNT(*) FROM Tbl WHERE Name IS NULL
Run Code Online (Sandbox Code Playgroud)
在避免(*)的同时,我发现以下两个语句给出了两个不同的结果:
SELECT COUNT(Id) FROM Tbl WHERE Name IS NULL
SELECT COUNT(Name) FROM Tbl WHERE Name IS NULL
Run Code Online (Sandbox Code Playgroud)
第一个语句正确返回1,而第二个语句产生0.Why还是How?
在Microsoft的MSDN Library关于Object.Equals Method(Object)的文章中,(http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx)提供了一个示例来演示如何重写Equals.它看起来像这样:
public override bool Equals(Object obj) {
//Check for null and compare run-time types.
if (obj == null || GetType() != obj.GetType()) return false;
// ...
}
Run Code Online (Sandbox Code Playgroud)
在随后的文件中,我注意到以下陈述.
(注意,这里不使用typeof,因为它返回静态类型.)
上述陈述的含义是什么 - 简单来说 - 这里的注意事项是什么?
说我有以下css:
.cls {}
.cls ul {list-style-type:none;}
.cls ul li
{
border-color:#ff0000;
border-style:solid;
float:left;
padding:0px 20px 0px 2px;
border-left-width:1px;
border-bottom-width:0px;
border-top-width:0px;
border-right-width:0px;
}
Run Code Online (Sandbox Code Playgroud)
我将类"cls"分配给<div>,如下所示:
<div class="cls">
<ul>
<li id="foo">Foo</li>
<li id="bar">Bar</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我使用jquery操作元素属性,请说我更改"bar"listitem上的border-left-color,如下所示:
$("#bar").css("border-left-color", "#0000ff");
Run Code Online (Sandbox Code Playgroud)
当包含<div>最初被赋予类"cls"时,是否有一种"jquery方式"来恢复listitem"bar"继承的属性?显然无需做:
$("#bar").css("border-left-color", "#ffff00"); }.
Run Code Online (Sandbox Code Playgroud)
形式为$().restoreClass()或等效的东西???
让我从这里开始.在w3cshools.com - http://www.w3schools.com/jsref/met_win_setinterval.asp - 他们有一个片段演示了如何使用javascript setInterval函数(令人惊讶的是它有一个不匹配的</ form>但那就是这一点) .
我需要使用setInterval(),有时我喜欢引用一些"标准"主体来瞥见推荐的用法.在我的开发环境中,当我在jquery $(document).ready(function(){...})中使用它时,似乎有些东西会破坏setInterval()的行为/工作.块.
图1 - 工作:典型/传统<script>块
<script type="text/javascript">
var refreshIntervalId;
function testMessage() {
window.alert("Hello");
}
refreshIntervalId = setInterval("testMessage()", 5000);
</script>
Run Code Online (Sandbox Code Playgroud)
图2 - 不工作: jQuery块
<script type="text/javascript">
$(document).ready(function() {
var refreshIntervalId;
function testMessage() {
window.alert("Hello");
}
refreshIntervalId = setInterval("testMessage()", 5000);
});
</script>
Run Code Online (Sandbox Code Playgroud)
图3 - 工作: jQuery块 - 使用setInterval(testMessage,5000)而不是setInterval("testMessage()",5000)
<script type="text/javascript">
$(document).ready(function() {
var refreshIntervalId;
function testMessage() {
window.alert("Hello");
}
refreshIntervalId = setInterval(testMessage, 5000);
});
</script>
Run Code Online (Sandbox Code Playgroud)
事实证明,如果我尝试将函数作为字符串从$(document).ready(function(){})传递出去; 块,我收到一个错误,表明该函数未定义.因此,我们不会让侧面跟踪的IE,Chrome和Firefox都报告错误: …
以下代码在大多数编译器(包括Microsoft Visual Studio的 - cl,Minimalist GNU for Windows - MinGW)上编译良好,但在Digital Mars Compiler上失败- dmc,错误:Error: type qualifiers and static can only appear in outermost array of function parameter
const int MAXLENGTH32 = 32;
typedef char String32[MAXLENGTH32];
void f1(const String32 tokens[]) {
}
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想说明以下内容:
我发布这个的第一个原因是获得专家意见,为什么代码在一个流行的编译器上失败(Bjarne Stroustrup自己推荐它http://www2.research.att.com/~bs/compilers.html).主要问题似乎是使用const参数.如果删除const,代码在DMC编译器上编译正常.
第二个重要原因是,在我对编译失败的可能解释的调查中,我没有遇到任何确凿的解释.更糟糕的是,我遇到了这样的建议:"C++程序员只是为了避免使用const".海报接着说,很难弄清楚规范const在上述场景中的使用情况,以及这些类型的东西是为什么const,作为类型修饰符,不在D中( - 用来解释有点).
这篇文章的最后一个个人原因是,我学到的关于C++语言的大多数特殊事情都是出于不采取像这样的立场 - 编译 - 所有 - 其余 - 所以该死的 - 它 …
c# ×7
.net ×5
c++ ×3
linq ×3
sql ×3
sql-server ×3
c++11 ×2
javascript ×2
jquery ×2
t-sql ×2
ado.net ×1
automapper ×1
const ×1
count ×1
css ×1
html ×1
inheritance ×1
linq-to-sql ×1
msdn ×1
oop ×1
wcf ×1