通常在更新linq2sql中的对象时,从datacontext获取对象并使用相同的datacontext来保存对象,对吧?
更新一个尚未被用于执行保存操作的datacontext检索的对象的最佳方法是什么,即我使用flourinefx在flex和asp.net之间传递数据,以及当对象从客户端返回时保存我不知道如何保存对象?
public static void Save(Client client)
{
CompanyDataContext db = new CompanyDataContext();
Validate(client);
if(client.Id.Equals(Guid.Empty))
{
//Create (right?):
client.Id = Guid.NewGuid();
db.Clients.InsertOnSubmit(client);
db.SubmitChanges();
}
else
{
//Update:
OffertaDataContext db = new OffertaDataContext();
db.Clients.????
}
}
Run Code Online (Sandbox Code Playgroud)
更新:使用Attach的不同方法在这种情况下不起作用.所以我想需要一种基于反射的方法.
在以下代码中不起作用
public void Foo()
{
CompanyDataContext db = new CompanyDataContext();
Client client = (select c from db.Clients ....).Single();
Bar(client);
}
public void Bar(Client client)
{
CompanyDataContext db = new CompanyDataContext();
db.Client.Attach(client);
client.SomeValue = "foo";
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我收到错误信息."已经尝试附加或添加一个非新的实体,可能是从另一个DataContext加载的.这是不受支持的."
如何在整个应用程序中使用DataContexts,这样您就不需要传递引用?
什么
我如何转换:
<%@ Application Language="C#" %>
<script runat="server">
void Session_Start(object sender, EventArgs e)
{
}
</script>
Run Code Online (Sandbox Code Playgroud)
对于使用HttpModule的方案?
另外,我可以将Global.asax编写为纯C#而不是使用标签吗?
如何在DataGridColumn中选择文本(以便我可以复制)?
如果我的DataSource中有对象,即
.Select(e => new { Foo = new { Bar = "HelloWorld" }, Price = 12345 }
Run Code Online (Sandbox Code Playgroud)
我如何使用Eval引用它?
<%# Eval("Foo.Bar") %>
Run Code Online (Sandbox Code Playgroud)
不起作用?(Eval("价格")确实....)
无论如何要做<%#Eval(Eval("Foo"),"Bar")%>或其他什么?
在"HelpRequest-mode"中单击时,如何让UserControl调度HelpRequest事件?
我试图用一些彩色背景设置最简单的UserControl.但无法让它发挥作用.
更新
namespace SeoTools.UI.Components
{
public partial class HelpRequestTest : UserControl
{
public HelpRequestTest()
{
InitializeComponent();
}
protected override void OnHelpRequested(HelpEventArgs hevent)
{
base.OnHelpRequested(hevent); //can't get it here either
}
}
}
namespace SeoTools.UI.Components
{
partial class HelpRequestTest
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) …Run Code Online (Sandbox Code Playgroud) 如何构建一个以列表作为参数的用户控件,即:
<foo:TabMenu runat="server">
<Tabs>
<Tab Label="Tab1" PanelId="pnlTab1"/>
<Tab Label="Tab2" PanelId="pnlTab2"/>
<Tab Label="Tab3" PanelId="pnlTab3"/>
</Tabs>
</foo:TabMenu>
Run Code Online (Sandbox Code Playgroud) 对于以下LINQ2SQL查询,我遇到SQL超时问题:
DateTime date = DateTime.Parse("2013-08-01 00:00:00.000");
Clients.Where(e =>
(
!Orders.Any(f => f.ClientId.Equals(e.Id) && f.OrderDate >= date)
||
Comments.Any(f => f.KeyId.Equals(e.Id))
)
).Count().Dump();
Run Code Online (Sandbox Code Playgroud)
在LinqPad中运行它时,将需要永远完成,如果在服务器上运行,将成为SQL超时.
生成的SQL代码:
-- Region Parameters
DECLARE @p0 DateTime = '2013-08-01 00:00:00.000'
-- EndRegion
SELECT COUNT(*) AS [value]
FROM [Clients] AS [t0]
WHERE (NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Orders] AS [t1]
WHERE ([t1].[ClientId] = [t0].[Id]) AND ([t1].[OrderDate] >= @p0)
))) OR (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Comments] AS [t2]
WHERE [t2].[KeyId] = [t0].[Id]
))
Run Code Online (Sandbox Code Playgroud)
在SQL-studio中正常工作!
但: …
c# ×7
asp.net ×5
linq-to-sql ×3
sql-server ×2
actionscript ×1
apache-flex ×1
azure-devops ×1
security ×1
t-sql ×1
winforms ×1