我正在使用MS SQL Server 2005.与SQL引擎之间有区别
SELECT * FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
和
SELECT ColA, ColB, ColC FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
当ColA,ColB和ColC代表表格中的每一列时?
如果它们是相同的,那么为什么你应该使用第二个呢?我有一个对LINQ很重的项目,我不确定它生成的标准SELECT*是不是很糟糕,或者我应该总是使用.Select()来指定我想要的cols.
编辑:更改"当ColA,ColB和ColC是表格的所有列?" "当ColA,ColB和ColC代表表格中的每一列?" 为清楚起见.
使用LINQ to SQL很可能不会像实体框架那样获得尽可能多的活动开发,您认为最好切换到实体框架吗?
我个人发现EF非常笨重而且难以使用,而LINQ to SQL感觉非常自然.
编辑:我最近在我的博客上发表了一篇关于我对这个潜在决定的感受的文章......
您是否有在您与LINQ查询结果交易时使用的默认类型?
默认情况下,LINQ将返回一个IEnumerable<>或者一个IOrderedEnumerable<>.我们发现a List<>对我们来说通常更有用,因此ToList()大多数时候习惯于查询我们的查询,并且肯定List<>在我们的函数参数和返回值中使用.
唯一的例外是LINQ to SQL,其中调用.ToList()将IEnumerable过早地枚举.
我们也广泛使用WCF,其默认集合类型是System.Array.我们总是System.Collections.Generic.List在VS2008的"服务引用设置"对话框中将其更改为与我们的其余代码库保持一致.
你是做什么?
我试图在SQL Server Profiler(2005)中查看Linq to SQL生成的SQL.
我可以看到除了linq到sql之外的任何东西发送到服务器的sql.
我打赌我需要更改跟踪的事件选择,但不确定还要选择什么.
我目前只选择这个:SQL:StmtCompleted - TextData&SPID
我不想使用数据上下文日志记录,也不想使用SQL Debug Visualizer.我需要使用分析器.
为什么我看不到LINQ to SQL查询?
谢谢.
我添加了SQL:BatchCompleted,但没有帮助.
我添加了事件RPC:Completed,它在事件选择中的Stored Procedures类别下找到.这有效!
sql sql-server sql-server-2005 sql-server-profiler linq-to-sql
我创建了一个LINQ to SQL datacontext,其中包含一个数据表.我试图简单地在该表中插入一条新记录.我遇到的问题是LINQ没有提供Add方法来传递新记录.我看过无数的例子,其中有一个Add方法,但我似乎无法得到它.我完全错过了某些东西还是其他东西?
using (praetoriaTestDataContext db = new praetoriaTestDataContext())
{
PageHit hit = new PageHit();
hit.DateViewed = DateTime.Now;
hit.Page = "test";
db.PageHits.Add(hit); //Add method is not available!
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
所以我设法让这个查询工作
List<string> listStatus = new List<string>() ;
listStatus.add("Text1");
List<string> listMerchants = new List<string>() ;
listMerchants.add("Text2");
from item in db.vw_Dropship_OrderItems
where listStatus.Contains(item.StatusCode)
&& listMerchants.Contains(item.MerchantId)
select item;
Run Code Online (Sandbox Code Playgroud)
在这里,我想检查listStatus和listMerchants是否仅为null,然后将它们放在WHERE子句中.
喜欢
如果listMerchants为null,则查询将是
where listStatus.Contains(item.StatusCode)
Run Code Online (Sandbox Code Playgroud)
我不想使用switch或If条件.
谢谢
我有一种情况,当我不能更新数据库中的原始记录,而是创建一个新记录,从旧复制所有字段并将更改应用于新的.(如果翻译成代码,这样的东西)
var original = from _orig in context.Test where _orig.id == 5 select _orig;
Test newTest = new Test();
newTest = original;
newTest.id = 0;
context.Test.InsertOnSubmit(newTest);
context.SubmitChanges();
original.parent_id = newTest.id;
original.isActive = 0;
Run Code Online (Sandbox Code Playgroud)
这给出了以下例外:
Cannot add an entity that already exists.
Run Code Online (Sandbox Code Playgroud)
是否可以在不手动复制每个字段的情况下使其工作?
在我的数据库中,我有一个名为StaffMembers的表
当我通过linq-to-sql将它带入我的.net项目时,会创建一个实体类StaffMember
现在我还在我的项目中创建了一个部分类StaffMember,以添加我在其他顶层使用的额外属性.例如.IsDeleted属性.此partial类还继承了一个抽象类和接口,以确保还实现了一些其他属性.
现在当我创建一个新的"StaffMember"实例时
例如.StaffMember newStaff = new StaffMember(); 并赋予其所有属性等
然后通过我的Manager调用上下文中的InsertOnSubmit.
Add(StaffMember newStaff)
{
context.StaffMembers.InsertOnSubmit(newStaff);
context.Save();
}
Run Code Online (Sandbox Code Playgroud)
我得到一个"对象引用没有设置为对象的实例"错误.
on context.StaffMembers.InsertOnSubmit(newStaff);
堆栈说
" at System.Data.Linq.Mapping.EntitySetDefSourceAccessor`2.GetValue(T instance)\r\n at
System.Data.Linq.Mapping.MetaAccessor`2.GetBoxedValue(Object instance)\r\n at
System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.HasDeferredLoader(MetaDataMember deferredMember)\r\n at
System.Data.Linq.ChangeTracker.StandardChangeTracker.StandardTrackedObject.get_HasDeferredLoaders()\r\n at
System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(MetaType mt, Object obj, Dictionary`2 visited, Boolean recurse, Int32 level)\r\n at
System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj, Boolean recurse)\r\n at
System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj)\r\n at System.Data.Linq.Table`1.InsertOnSubmit(TEntity entity)\r\n at
BusinessObjects.StaffMemberManager.Add(StaffMember staffMember) in
C:\\StaffMemberManager.cs:line 251"
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会发生这种情况以及它的方式是什么.
谢谢
我需要帮助,
我有两个名为A和B的dataTable,我需要来自A的所有行和B的匹配行
例如:
A: B:
User | age| Data ID | age|Growth
1 |2 |43.5 1 |2 |46.5
2 |3 |44.5 1 |5 |49.5
3 |4 |45.6 1 |6 |48.5
Run Code Online (Sandbox Code Playgroud)
我需要外出:
User | age| Data |Growth
------------------------
1 |2 |43.5 |46.5
2 |3 |44.5 |
3 |4 |45.6 |
Run Code Online (Sandbox Code Playgroud) 当然这是一个非常愚蠢的问题,但如何将我的C#控制台应用程序连接到SQL Server实例?
用c#Web Apps做了很多次,但这是我做过的第一个控制台应用程序.
我能看到的唯一数据源(在VS 2010中)是SQL Server数据库文件 - 我无法看到如何连接到不同服务器上的SQL实例.
linq-to-sql ×10
c# ×4
linq ×4
.net ×2
sql ×2
sql-server ×2
ado.net ×1
database ×1
insert ×1
where-clause ×1