标签: linq-to-sql

Linq在同一事务中sql多个数据上下文

我正在开发一个项目,我有多个reposetories从不同的表中获取数据.我的所有存储库都是独立的,它们创建新的dataContext,向表中添加行并应用提交更改命令.现在,如果在我的服务中,有一种情况我必须将数据插入到多个表中,但它应该在一个事务中发生.我可以使用TrnasctionScope的东西实现这一点,但那需要相同的dataContext.当我使用StrucutreMap创建我的对象时,我无法获得相同的数据上下文,因此我的事务失败了.

这是我的对象是如何.

interface IConnection
{
 MyDataContext GetContext();
}

public class Connection : IConnection
{

   public MyDataContext GetContext()
   {
    return new MyDataContext();
   }

} 

interface IRepositryA
{
  int SaveDataA(objectA a);
}

public class RepositoryA : IRepositryA
{
     public int SaveDataA(objectA a)
     {
        var context = objectFactory.GetInstance<IConnection>().GetContext();   
        context.TableA.InsertOnSubmit(a);
        context.SubmitChanges();

        return a.ID;
     }
}

interface IRepositryB
{
   int SaveDataA(objectB b);
}

public class RepositoryA : IRepositryB
{
     public int SaveDataB(objectB b)
     {

        var context = objectFactory.GetInstance<IConnection>().GetContext();   
        context.TableB.InsertOnSubmit(b);
        context.SubmitChanges();
        return b.ID;
     }
}
Run Code Online (Sandbox Code Playgroud)

现在在我的服务层中,我将它们称为 …

linq transactionscope linq-to-sql

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

Linq to Sql - 将C#转换为VB.NET帮助

我在将C#Linq语句转换为VB.NET时遇到了麻烦.我需要转换以下语句.我在i.Sum(v => v)部分被挂断了.

from p in Products
from u in Users
let i = (from op in OrderProducts
         where op.Order.User == u && op.Product == p
         select op.ProductQty)
let quant = i.Count() == 0 ? 0 : i.Sum(v=>v)
select new {p.ProductName, u.UserName, Quantity = quant}
Run Code Online (Sandbox Code Playgroud)

这是我对VB的看法,但If(i.Count()= 0,0,i.Sum())_语句表示在运行时期间不支持无参数聚合运算符'Sum'(没有编译时错误).我也尝试了i.Sum(函数(q)i.ProductQty),它也不起作用(表示不能用这些参数调用sum).

From p In Products _
From u In Users _
Let i = (From op In OrderProducts _
         Where op.Order.User.UserID = u.UserID And op.Product.ProductID = p.ProductID _
         Select op.ProductQty) _
Let Qty = …
Run Code Online (Sandbox Code Playgroud)

linq vb.net linq-to-sql

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

使用Linq to SQL读取单行数据的正确方法是什么?

我对Linq很新,我可以在任何地方找到多行数据读取示例(通过使用foreach()),但是读取单行数据的正确方法是什么?像经典的产品详细信息页面.

以下是我的尝试:

var q = from c in db.Products
    where c.ProductId == ProductId
    select new { c.ProductName, c.ProductDescription, c.ProductPrice, c.ProductDate };

string strProductName = q.First().ProductName.ToString();
string strProductDescription = q.First().ProductDescription.ToString();
string strProductPrice = q.First().ProductPrice.ToString();
string strProductDate = q.First().ProductDate.ToString();
Run Code Online (Sandbox Code Playgroud)

代码看起来不错,但是当我看到使用SQL Profiler生成的实际SQL表达式时,它让我很害怕!程序执行了四个Sql表达式,它们完全相同!

因为我从一行读了四列.我想我一定做错了,所以我想知道这样做的正确方法是什么?

谢谢!

linq linq-to-sql

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

用户名/密码数据库检查

如何改进此用户名/密码检查?

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Login(FormCollection collection)
    {
        var users =
            (from p in _dataContext.Users
            where p.Name == collection["Username"] && p.Password == collection["Password"]
             select p);

        if (users.Count() > 0)
        {
            // Login Succeed
            // To get the username I should do something like users.First().Name
            // and that's really bad...

            return RedirectToAction("Login");
        }
        else
        {
            // Login Faild
            return View();
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# linq authentication linq-to-sql

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

LINQ语法帮助:投影和分组

LINQ的新功能.我很好奇在LINQ中执行以下SQL查询的语法

SELECT MAX(TMPS), DAY FROM WEATHERREADINGS
GROUP BY WEATHERREADINGS.DAY
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

var minTemps = from ps in ww.WEATHERREADINGS
               group ps by ps.DATE.Hour into psByHour
               select new
               {
                   HourOfDay = psByHour.Max().DATE.Hour,
                   MaxTemp = psByHour.Max().TMPS
               };
Run Code Online (Sandbox Code Playgroud)

这样做时我收到以下错误:

异常详细信息:System.InvalidOperationException:无法将节点"New"格式化为SQL执行.

任何帮助非常感谢!!

c# linq linq-to-sql

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

Linq to sql中的异常

我的查询是:

var ReadAndUnreadMessages =
        (from m in MDB.Messages
         orderby m.Date descending
         where m.ID_Receive == (Guid)USER.ProviderUserKey && m.Delete_Admin == false
         select new AllMessages()
         {
             id = (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).ID_Message,
             parent = (Guid)(LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).ID_Message_Parent,
             sender = (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).ID_Sender,
             receiver = (Guid)USER.ProviderUserKey,
             subject = (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).Subject.Subject1.ToString() == "Other" ?
                           (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).Other_Subject
                           :
                           (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).Subject.Subject1.ToString(),
             body = (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - 1] as Message).Body.Length > 26 ?
                     (LoadMessageChildren(m.ID_Message)[LoadMessageChildren(m.ID_Message).Count - …
Run Code Online (Sandbox Code Playgroud)

exception linq-to-sql

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

这有利于启动; Linq to SQL还是Nhibernate?

我想学习ORM,我想知道哪个对于启动是有益的; Linq to SQL或Nhibernate.考虑时间,适应......等等

database asp.net nhibernate orm linq-to-sql

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

LINQ to SQL查询没有正确排序,请帮忙

    var temp = (from assetVisit in db.AssetVisits
                join assetBundle in db.AssetBundles on assetVisit.AssetID equals assetBundle.AssetID
                join groupBundle in db.GroupBundles on assetBundle.BundleID equals groupBundle.BundleID
                join userGroup in db.UserGroups on groupBundle.GroupID equals userGroup.GroupID
                where assetVisit.CompanyID == companyID &&
                      userGroup.UserID == userID
                select new { AssetID = assetVisit.AssetID, Count = assetVisit.AccessCounter }).Distinct();

    IQueryable<Asset> final = (from t in temp
                              join asset in db.Assets on t.AssetID equals asset.AssetID
                              where asset.IsActive == true
                                    && asset.AssetTypeID == assetType
                                    && asset.ShowInResults == true
                                    && (asset.CompanyID == companyID …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

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

如何查询匿名类型集合?

如何查询使用select new?填充/创建的集合?

我有这个BindingSource:

this.bindingSource.DataSource = 
    from row in db.Table
    select new 
    {
      name = row.Name + row.Num.ToString()
    };
Run Code Online (Sandbox Code Playgroud)

我想像查询其他BindingSources一样查询它:

var query = from row in (IEnumerable<Table>)anotherBindingSource.List
            where row.name == "asd"
            select row;
Run Code Online (Sandbox Code Playgroud)

由于bindingSource包含匿名类型,我收到此错误:

无法将类型为'System.Data.Linq.SortableBindingList 1[<>f__AnonymousType815 等的对象强制转换为'System.Collections.Generic.IEnumerable`1 [Table]'.

我该怎么办?

linq anonymous-types linq-to-sql

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

如何在Linq To Sql中获取名称以数字开头的项目?

我如何获得产品列表,例如,他们的productName以数字开头?

谢谢!!

linq-to-sql c#-3.0

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