我刚开始使用ASP.NET MVC1.0。我已经通读了一些教程,但我对如何构建我的模型没有任何好的想法。
我一直在试验LINQ to SQL。我不能说我有多喜欢它,但我会试一试。我更喜欢使用SQL存储过程,但它与存储过程中的可选参数配合使用似乎不是很好。
这个项目是一个原型,但我想立即从一个好的设计开始。
数据库可能包含大约50个表,所有查询和更新都将使用存储过程。有些过程还会返回多个结果。设计这个模型的最好方法是什么?
欢迎所有的想法。我甚至应该使用LINQ to SQL吗?我应该将我的存储过程设计为只返回一个结果吗?我觉得有点迷茫。
我希望将现有的存储过程转换为LINQ- to -SQL预编译的动态SQL。有人知道做这件事的最好方法吗?
我提到预编译是因为我相信我可以获得性能提升-不是和SPROC相同,但相似,对吗?还有LINQ-to-SQL预编译的动态SQL,我得到了强类型的字段,等等。这些假设是正确的吗?
而且,它可能不可用,但是有没有办法将我的存储过程自动转换为LINQ- to -SQL?
我已经用SQL编写了一个存储过程,并希望在我的Linq2SQL设计器中使用它。因此,我像往常一样将其从visual studio (2019)中的服务器资源管理器拖放到我的设计器中,但此过程的返回类型为None。当我查看我的SQL过程时,似乎很清楚没有返回值,因为它使用EXEC来执行查询,但我可以在SQL Server Management Studio中看到结果。
下面是我的存储过程:
CREATE PROCEDURE [dbo].[ret_VAL]
@ITEMNR nvarchar(255),
@COLUM_NAME nvarchar(255)
AS
我们正在对所有SSN列进行加密(由于安全审计,现在不得不这样做)。我们已经构建了DBML,现在我们必须更改它。你们能让我知道在LINQ to SQL中有没有好的方法来处理这个问题?我们使用存储过程进行插入、更新和删除,而使用LINQ to SQL进行所有选择(易于使用)。我是否必须使用SSN更改这些表的格式,或者是否有其他方式可以在LINQ to SQL中处理它?
谢谢,Raja
我是LINQ的新手,在从一个简单的(工作的)存储过程中获得正确的结果时遇到了一个问题,这个存储过程没有参数,只返回一个Integer。当使用LINQ调用此存储过程时,其返回值始终为0。当使用tableadapter或直接在sql server上运行时,它可以工作,返回6位数值,如120123。
这是我的LINQ代码:
Dim MeetingManager As New MeetingManagerDataContext
Dim MeetingID As Integer = MeetingManager.NewMeetingID().ReturnValue
以下是NewMeetingID过程:
我正在做一个需要使用Linq To SQL的新项目。我被要求创建一个泛型或可重用的Linq to SQL类,用于执行存储过程。
在ADO.Net中,我知道如何做到这一点,只需传递一个我想要执行的字符串,并且我可以为我需要运行的每个查询传递不同的字符串:
SqlCommand cmd = new SqlCommand("myStoredProc", conn); // etc, etc
我正在为如何在Linq To SQL中创建类似的东西而苦苦挣扎,如果可能的话。我已经创建了一个.dbml文件,并向其中添加了我的存储过程。因此,我可以使用以下代码返回结果:
public List
我在MS SQL Server中有一个过程,我使用LINQ这样调用它
var history = dataContext.GetHistory("EA434144-BA34-480B-8A06-65CC7D405111",
System.DateTime.ParseExact("2011-05-30", @"yyyy-MM-dd", null));
当我将该过程添加到visual studio时,它说无法检测返回值。调用时,出现设计时错误:无法将void赋值给隐式类型的局部变量
我尝试在visual studio
我有一个Linq to SQL数据上下文类,在这个类中我正在触发一个存储过程。我可以通过生成的代码跟踪存储过程被触发的位置。我检查了System.Data.Linq.SqlClient.SqlProvider.ExecuteResult,可以看到有一个名为"value“的私有成员,它包含更新的行数。它似乎没有任何公共访问器,而且结果似乎也不会返回到数据上下文中。有没有其他方法可以访问这个值,或者我必须从每个存储过程(yuck)返回@@RowCount?
我对Linq to Sql的理解是,它将获取我的Linq语句并将其转换为等效的SQL语句。
所以
var products = from p in db.Products
where p.Category.CategoryName == "Beverages"
select p
就会变成
Select * from Products where CategoryName = 'Beverages'
如果是这样的话,我看不出存储过程有什么用处。
我有一个包含动态sql的存储过程来返回结果集。查询运行得很好,但是我不能通过Linq to sql使用它。数据类设计器似乎认为查询只包含一个列(位置),而不是正确的数字。
我猜是因为动态sql意味着列在设计时不可用。查询是这样的:
set @query = 'select ' + char(13) +
'case when a.location is not null then upper(left(a.location, 1)) + right(a.location, len(a.location) - 1) else ''All''
我正在使用这个存储过程
ALTER PROCEDURE [dbo].[MyProcedure]
@pSelect nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL nvarchar(max)
SET @SQL = 'select ' + @pSelect + ' from vwAcdAdmissionWithvwAcdAdmissionSessionDetailWithAllMaster';
EXEC (@SQL)
END
并通过linq从c#.net实体数据
我有一个新闻表,我希望允许用户在其中进行搜索。如下所示:
News.Where(p => p.Title == user_query);
...that将允许更高级的查询,如Differences Between "Linq to Objects" and "Linq to SQL" queries等,而且它应该是不区分大小写的。
根据所有示例,将SQL转换为LINQ for this子句,如本例所示:
SELECT NAME
FROM TABLES
GROUP BY NAME
HAVING COUNT(*) > 1
is:(vb.net)
from t in tables
group t by t.NAME into g = Group
where g.count > 1
select g
但是,上面的LINQ语句被转换为以下SQL:
SELECT [t1].[NAME] AS [Key]
FROM (
SELECT COUNT(*) AS [value], [t0].[NAME]
Linq to SQL和Linq to Entities依赖于创建动态SQL来完成大量工作,特别是当您让类以某种方式表示数据库表时。然而,如果数据库不允许即席SQL查询,并且所有东西都必须通过存储过程,如果开发人员必须预先编写所有SP来完成所有工作,并且知道这些都是将在应用程序中的所有场景中使用的所有SP,那么我看不出使用L2Q或L2E有多大价值。
视图可能会缓解这种情况,但是如果创建视图需要DBA权限,这仍然是一个麻烦。
我正在尝试使用Linq访问存储过程的返回值
DECLARE @ValidToken int = 0 //I have also tried using a bit instead of an int here.
IF EXISTS(SELECT 1 FROM Tests WHERE TestToken = @Token)
select @ValidToken = 1
return @ValidToken
这在通过sql studio运行SP时起作用。但是,我尝试使用datacontext类通过linq运行它,结果总是返回-1。
using (DataEntities dataEnt
我创建了一个调用存储过程的LINQ TO SQL上下文。当我循环遍历ISingleResult时,它是在底层DataReader读取结果时动态创建实体,还是在函数调用返回之前预先将所有内容放入实体中。
基本上,我使用的是一个存储过程,它有时可能返回数千条记录中的10条,而大多数时候它只返回几千条记录。
DatabaseDataContext context = new DatabaseDataContext();
var resultSet = context.MyStoredProc();
foreach (var result in resultSet)
{
// some co
有没有办法让LINQ把查询直接转换成像SQL的STDEV这样的函数呢?例如,LINQ
from t in table
group t by t.something into g
select new {
avg = g.Average(o => o.number)
stdev = g.?????
}
转换为SQL AVG。但是,LINQ中不支持标准差。
这里提出了一种方法:
但是,这很笨拙,而且还需要一些额外的工作来处理可能的空值,而sql STDEV函数会自动为您忽略这些空值。此外,它导致通过网络发送的数据更少,计算速度更快。
有办法做到这一点吗?
有没有办法这样做:
var keywords = SearchUtilities.FindKeyWords(q);
var j = (from p in _dataContext.Jobs
orderby p.JobKeywords.Select(jobKeyword => jobKeyword.Keyword)
.Intersect(keywords).Count())
.Take(10).AsEnumerable();
这里的主要思想是通过对搜索查询中存在的关键字和与作业关联的关键字的计数来排序搜索结果。
我不想先把所