Tag: sql

不使用导航属性添加相关实体

我有以下类,设置为测试: public class Company { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string Name { get; set; } } public class Employee { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string Name { get; set; } public int CompanyId { get; set; } public virtual Company Company { get; set; } […]

解析SQL查询并提取列名和表名

我有一个像这样的查询脚本: SELECT View1.OrderDate,View1.Email,SUM(View1.TotalPayments)FROM dbo.View1 WHERE(View1.OrderStatus =’Completed’)GROUP BY View1.OrderDate,View1.Email HAVING(SUM(View1.TotalPayments)> 75); 有没有什么方法可以从SQL查询中提取一些关键信息? 如表名和列名,我有2个问题: 我做了搜索我发现了一些解析器,如ANTLR,但我找不到解释在C#语言中使用这个解析器的文档。 我们有什么办法可以使用Entity Frame Work来解析sql查询吗? 我的查询是完全动态的,它们是在运行时创建的

mvc和EF中的多对多关系

我创建了一个博客网站,用户可以使用Entity Framework在我的模型和数据库中Post博客, Posts和Tags之间存在多对多的关系。 在我的数据库中我也有PostTagMap ,但是我在EF模型中没有看到这个。 不确定我是否需要。 PostTagMap只包含Post和Tag的唯一标识符。 (应该注意我从模型中创建了数据库) 在我的Create Post视图(和控制器)上,我希望用户可以选择创建标签(以及post),确保他们彼此识别。 但是我找不到办法做到这一点。 邮政模式: public partial class Post { public Post() { this.Tags = new HashSet(); } public int Id { get; set; } public string BlogUserEmail { get; set; } public int CategoryId { get; set; } public string Title { get; set; } public string […]

SQL筛选器查询

我有一个包含许多字段的表。 我正在尝试在asp.net中创建搜索filter,以便用户可以通过一个或多个字段组合进行搜索。 所以基本上我想创建一个接受4个参数的单个存储过程,如果它不为空,它会将参数附加到WHERE子句…… TableExample有4列,Col1 Col2 Col3 Col4 我希望有一种方法可以使用单个存储过程来完成此操作,而不必为每个可能的组合创建一个。 我正在尝试这样的事情,这是不正确的,但它是迄今为止我所得到的。 谢谢! CREATE PROCEDURE [dbo].[Search] @Col1 int, @Col2 int, @Col3 int, @Col4 int AS SET TRANSACTION ISOLATION LEVEL READ COMMITTED SELECT * FROM [dbo].[TestTable] WHERE 1=1 CASE WHEN @Col1 IN NOT NULL THEN AND [Col1] = @Col1 WHEN @Col2 IN NOT NULL THEN AND [Col2] = @Col2 […]

将List 保存到ASP.NET中的会话

CartItems保存在SQL数据库中。 我想将所有CartItem放入List并转移到Instance.Items。 实例变量将保存到会话中。 代码如下。 public class ShoppingCart { public List Items { get; private set; } public static SqlConnection conn = new SqlConnection(connStr.connString); public static readonly ShoppingCart Instance; static ShoppingCart() { if (HttpContext.Current.Session[“ASPNETShoppingCart”] == null) { Instance = new ShoppingCart(); Instance.Items = new List(); HttpContext.Current.Session[“ASPNETShoppingCart”] = Instance; } else { Instance = (ShoppingCart)HttpContext.Current.Session[“ASPNETShoppingCart”]; } } […]

指定的强制转换是无效的Linq查询

您好我想基于其主键查询表。 我试过了两个 var deviceDetails = (from d in db.Devices where d.DeviceId == pointDetails.DeviceId select d).ToList(); 编辑d.DeviceId var deviceDetails = db.Devices.Single(d => d.DeviceId == pointDetails.DeviceId) 我知道这些会返回不同的类型,但现在这不是问题。 这个语句抛出一个invalidCastException,我不知道为什么。 PointDetails.DeviceId绝对是一个有效的int。 即使我用硬编码的int替换它,也会引发exception。 这是堆栈跟踪的相关部分。 at System.Data.SqlClient.SqlBuffer.get_Int32() at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i) at Read_Device(ObjectMaterializer`1 ) at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 任何帮助都是因为我没有想法。 类定义和模式这是Device的类定义 [global::System.Data.Linq.Mapping.TableAttribute(Name=”dbo.Devices”)] public partial class Device : INotifyPropertyChanging, INotifyPropertyChanged […]

更高效的数据库访问

我是数据库和linq的新手,所以我的问题可能被认为是微不足道的。 我目前在每个类中启动所有数据库请求: DataClassesDataContext db = new DataClassesDataContext() 然后我继续在方法中做出我需要的任何linq请求,并继续使用主应用程序逻辑。 现在,两个有趣的查询: 1)我相信我已经看到人们在’使用’中包含数据库使用。 如: using (DataClassesDataContext db = new DataClassesDataContext()) { … } 如果这是正确的,那么这不是说我的类不能再使用成员’db’变量了,而是需要在每个函数调用中进行那些db请求吗? 另外,如果我不在通话中使用’使用’,究竟会发生什么? 2)在启用SQL事件探查器的情况下运行我的应用程序,我看到许多连接打开和关闭。 这是否意味着每个DataClassesDataContext调用都会建立一个单独的连接? 它看起来效率低下,在实际使用的每个类中实际使DataClassesDataContext对象成为静态的正确方法是什么?

使用LINQ to SQL时,这是一个虚假的警告吗?

根据我见过的许多LINQ示例,我使用类似下面的代码创建自己的数据上下文和表: class MyDatabase : DataContext { public Table Widgets; public Table Cars; public MyDatabase (string connection) : base(connection) { } } 但对于每个表(小部件,汽车等),我收到警告字段’TableName’从未分配 。 我在Google上找不到任何有这个问题的人。 我不觉得我做错了什么,因为我只是复制了我在不同地方看过的LINQ示例。 那么这个警告怎么了呢? 它警告我一个真正的问题吗? 或者我错过了什么?

LINQ查询论坛

我正在编写这个论坛,因为我是LINQ的新手,当用户点击主页面时遇到了这个问题。 我想要一个显示这样的论坛列表的表: Forum — Topics (count) — Posts (count) — LastPostUserId — LastPostTime 我有以下SQL表: Forums: ForumId (int32), Title (string), Description (string) ForumThreads: ThreadId (int32), ForumId (int32), UserId (guid), Subject (string), Views (int32), CreateDate (DateTime) ForumPosts: PostId (int32), ThreadId (int32), UserId (guid), Post (string), CreateDate (datetime) 谢谢…

LINQ Group By投射到非匿名类型?

我有以下LINQ示例: var colorDistribution = from product in ctx.Products group product by product.Color into productColors select new { Color = productColors.Key, Count = productColors.Count() }; 所有这些都有效并且非常有意义。 我想要实现的是将其分组为强类型而不是匿名类型。 例如,我有一个ProductColour类,我想组成一个List 这可能吗? 谢谢