标签: linq-to-sql

构造函数中的业务逻辑 - C#/ Linq to Sql

我正在扩展(不确定这是否是正确的词)在Linq to SQL数据库模型中生成的部分Cart类.

业务逻辑是每个客户只能有一个购物车.如果客户没有购物车,则应该创建; 如果客户有购物车,则应退回.

这是我正在做的事情:

public partial class Cart
{
    //the rest of the Cart class is in the .dbml file created by L2S
    public Cart(int userId)
    {
        Cart c = GetCurrentCart(userId);
        this.CartId = c.CartId ;
        this.UserId = c.UserId;
    }

    public Cart GetCurrentCart(int userId)
    {
        Cart currentCart = new Cart();

        // if cart exists - get it from DB
        //if not - create it, save in DB, and get if right out
        //all of this is done with Linq …
Run Code Online (Sandbox Code Playgroud)

c# class-design .net-3.5 linq-to-sql

0
推荐指数
2
解决办法
955
查看次数

如何在C#3.0中的存储过程方法中传递char null?

我正在努力让这个SP运行:

myDataContext.InsertEvent(codEvent, dateOfEvent, statusOfEvent);
Run Code Online (Sandbox Code Playgroud)

codEvent是一个int; dateOfEvent是一个DateTime; statusOfEvent是一个char.

问题是如果我传递statusOfEvent null,Visual Studio会抛出错误.并且,我的SP像我的桌子一样接受可空的字符.

我也尝试过这样做:

char? statusOfEvent= null;
      if (!String.IsNullOrEmpty(f["statusOfEvent"]))
           statusOfEvent= Convert.ToChar(f["statusOfEvent"]);
Run Code Online (Sandbox Code Playgroud)

但它也会引发错误......

谢谢!!

我试过这个三元表达式:

!String.IsNullOrEmpty(f["statusOfEvent"]) ? Convert.ToChar(f["statusOfEvent"]) : DBNull.Value
Run Code Online (Sandbox Code Playgroud)

但据说"char和DBNull之间没有隐式转换"

我还查看了'*.dbml'designer.cs文件,我的SP方法有这一行:

[Parameter(DbType="Char(1)")] System.Nullable<char> statusOfEvent
Run Code Online (Sandbox Code Playgroud)

c# sql-server linq-to-sql

0
推荐指数
1
解决办法
2279
查看次数

为什么LINQ to SQL将重复项插入到我的表中?

我有一个Web服务,可以从我的数据库中检索评论,如果没有返回足够的评论,它会转到辅助源并将它们放到那里并将它们缓存在我的数据库中.我最近注意到它已经在我的数据库中创建了重复项,尽管我有主键来防止它.我在想,也许当我做桌子时我做错了什么?这是SQL create table片段:

create table Review(  
ReviewID int IDENTITY,  
CacheDate DateTime,  
UniqueID nvarchar(50),  
Type nvarchar(100),  
AverageRating decimal,  
TotalReviews decimal,  
Rating decimal,  
Content nvarchar(max),  
Summary varchar(100),  
HelpfulVotes int,  
TotalVotes int,  
ReviewDate nvarchar(100),  
ReviewerID nvarchar(100),  
ReviewerName nvarchar(100),  
ReviewerLocation nvarchar(100),  
primary key(ReviewID,UniqueID) 
)
Run Code Online (Sandbox Code Playgroud)

我已经逐步完成了我的代码,当它到达try catch部分时,它仍会插入行,即使它已经存在.

try { db.SubmitChanges(); }  
catch (Exception ex) {.....  
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么问题?

.net c# sql linq linq-to-sql

0
推荐指数
1
解决办法
358
查看次数

asp.net mvc 1到很多保存帖子和上传文件

我是asp.net mvc的新手.

我正在使用Linq到Sql并试图做松散耦合的一切.

我有两张桌子:

  1. 新闻
  2. NewsFiles

我要做的是保存新闻并同时上传文件.

如何与他的文件一起创建新闻,将其保存到NewsFiles表?

Linq to Sql模型没问题,它包含对象NewsFile到News对象.

我的新闻表的具体存储库类(葡萄牙语中的noticia):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MagixCMS.Models
{
    public class NoticiaRepository : INoticiaRepository
    {
        #region INoticiaRepository Members

        magixcmsEntities _entities = new magixcmsEntities();

        public noticia CreateNoticia(noticia noticiaToCreate)
        {
            _entities.AddTonoticiaSet(noticiaToCreate);
            _entities.SaveChanges();
            return noticiaToCreate;
        }

        public void DeletaNoticia(noticia noticiaToDelete)
        {
            var noticiaOriginal = GetNoticia(noticiaToDelete.Id);
            _entities.DeleteObject(noticiaOriginal);
            _entities.SaveChanges();
        }

        public noticia EditNoticia(noticia noticiaToEdit)
        {
            var noticiaOriginal = GetNoticia(noticiaToEdit.Id);
            _entities.ApplyPropertyChanges(noticiaToEdit.EntityKey.EntitySetName, noticiaToEdit);
            _entities.SaveChanges();
            return noticiaToEdit;
        }

        public noticia GetNoticia(int id)
        {
            return …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-relationship linq-to-sql

0
推荐指数
1
解决办法
2027
查看次数

如何使用LINQ在foreach命令中插入多行?

我写了这些文字:

foreach (var catId in CatIds)
{
    AdCategory.AdId = LastAd.AdID;
    AdCategory.CategoryId = catId;
    EngineDB.Ad_Categories.InsertOnSubmit(AdCategory);
    EngineDB.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)


和CatIds是一个整数数组.
此命令正确插入第一个元素但下一个循环导致此异常:
"无法添加已存在的实体."
我该如何解决呢?
请尽快帮助我!

linq-to-sql c#-3.0

0
推荐指数
1
解决办法
9264
查看次数

ASP.NET MVC模型和业务对象

我正在寻找关于如何将业务规则合并到asp.net mvc应用程序以及它们与模型的关系的一些指导.

首先是一个小背景,所以我们知道这个问题的解决方案是什么类型.在工作中,我们使用WinForms,MVP,BusinessObjects,DataAccessObjects和DataTransferObjects.层的边界使用DTO将参数发送到方法和返回类型,或返回List类型.

现在我们正在添加一个Facade层来将DTO转换为域对象以供UI使用,因为架构师不喜欢在PresentationLayer中使用DTO当前是如何工作的.除了实用与否之外,我在理论上对这一切感到很自在.

我正在建立一个有趣的网站,但考虑到它可以说它提供与SO相同的流量,就像我听到的每月60,000次点击.我对控制器和视图的机制以及模型如何与两者集成感到满意.

我使用NerdDinner作为构建站点的示例,我遵循示例中的Repository模式实现.我没有得到的是如何将业务对象合并到一起.

我听说人们谈论LINQ作为DataAccessLayer/DataAccessObjects.如果我通过业务对象强制我的所有请求,因为我已经习惯了,我已经介绍了一些奇怪的依赖项.我的UI和我的BO都必须知道我的DAO.

有意义的是将LINQ类用作真正的DAO层,将其隐藏在BO后面,并在POCO和LINQ对象之间进行BO转换.

我唯一担心的是将我的UI绑定到LINQ类,并不需要所有额外的工作,我很满意NerdDinner中的轻量级方法.

所以我本质上是在控制器中实例化的Repository,它接受并返回LINQ对象.我的业务对象有静态方法,只需要LINQ类并执行一些计算,比如应用某个州税%或w/e.

由于很多这些计算必须在存储库的结果中完成,我正在考虑将它们组合到一个中心区域,如外观层,但是它只是转换数据而不转换为其他对象集(DomainObjects) < - > DTOs).

我应该这样做,还是应该说这些业务方法确实是我的模型的一部分,并且它们应该在返回对象的存储库方法中?

architecture asp.net-mvc model linq-to-sql

0
推荐指数
1
解决办法
2370
查看次数

用Linq返回单列

 public string GetNameBySSN(string SSN)
 {
    var results = from c in Clients
                  where c.ClientSSN.Equals(IRRCNumber)
                  select c.FirstName;
    //return results.ToString();
 }
Run Code Online (Sandbox Code Playgroud)

我希望使用Linq返回单个列值,并且不确定是否有办法快速轻松返回.我评论了一段代码,我知道它不返回值,如果枚举通过集合我可以得到值,但想知道是否有更好的方法.

我知道Linq是基于Set的,并且它没有预先知道结果是由单个成员设置的.

.net c# linq linq-to-sql

0
推荐指数
2
解决办法
5902
查看次数

使用linq,你是否像nHibernate所要求的那样为每个请求创建一个dbContext?

使用linq,你是否像nHibernate所要求的那样为每个请求创建一个dbContext(出于性能原因,在我所理解的nhibernate中创建会话是一个昂贵的调用).

即在我的asp.net-mvc应用程序中,我可能针对给定的操作,在单独的调用上打了5-10次数据库.我是否需要创建上下文并将其重新用于整个请求?

c# asp.net-mvc linq-to-sql

0
推荐指数
1
解决办法
1092
查看次数

如何在linq到sql中执行多个Group By?

怎么能在linq到sql中做多个"group by's"?

你能用linq查询语法和linq方法语法向我展示.

谢谢

编辑.

我说的是多个参数,比如按"性别"和"年龄"进行分组.

另外我忘了提到在我分组之前我怎么说加起来所有的年龄.

如果我有这个例子我将如何做到这一点

表产品

ProductId ProductName ProductQty ProductPrice

现在想象一下,无论出于什么原因,我都有大量的行,每行都有相同的ProductName,不同的ProductQty和ProductPrice.

我如何通过产品名称填充下边缘并将ProductQty和ProductPrice加在一起?

我知道在这个例子中,为什么一行一行地使用相同的产品名称可能没有任何意义,但在我的数据库中它是有意义的(它不是产品).

asp.net-mvc linq-to-sql

0
推荐指数
1
解决办法
3399
查看次数

Linq To SQL:为什么这不起作用?

为什么我会收到以下编译错误?

int[] threadIDs = { 4,5,6,7,8,9,10,11,12,13,14,15,16,17 };
CSDataContext db = new CSDataContext();
var posts = from p in db.cs_Posts, t in threadIDs
    where p.ThreadID == t
    select p.ThreadID;
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

0
推荐指数
1
解决办法
122
查看次数