我在基于C#的代码中使用Entity Framework.我遇到了意想不到的怪异,正在寻找建议.
案例1,2,3,4 ......项目:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll
样本(所有这些工作):
RivWorks.Alpha.dll:
public static bool EndNegotitation(long ProductID)
{
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == ProductID select a).FirstOrDefault();
...
}
Run Code Online (Sandbox Code Playgroud)
RivWorks.Service.dll
public static RivWorks.Model.NegotiationAutos.AutoWithImage
GetProductById(long productId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.AutoID == productId select a;
return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage>
GetProductByCompany(Guid companyId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.CompanyID == companyId select a;
return myProduct.ToList();
}
Run Code Online (Sandbox Code Playgroud)
等等
案例"怪异":
RivWorks.Web.Service.dll(WCF项目)
包含与其他项目相同的引用.
public …
Run Code Online (Sandbox Code Playgroud) 我刚遇到一个理论问题的时候了.
以下代码有效并编译:
public class Parent
{
public virtual object TestProperty { get; set; }
}
public class Child : Parent
{
private string _testValue = "Hello World!";
public override object TestProperty
{
get { return _testValue; }
}
}
public class Consumer
{
Parent p = new Child();
public Consumer(){ p.TestProperty = 3; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
为什么C#允许我部分覆盖TestProperty
孩子的auto属性,导致部分不可预测的行为?有实际应用吗?
我被允许使用父设置器设置TestProperty的值(我检查了生成的IL,并且设置器仍在父类中设置支持对象),即使公众无法访问值.
我试图迭代包含html表的Repeater的内容,并使用每个单元格的内容.这适用于标准HTML组件,但在我尝试使用控件时会爆炸.下面的代码将打印第一个单元格的值"Item#1",但在尝试访问第二个单元格的.InnerText时会抛出HttpException.错误如下:
Cannot get inner content of because the contents are not literal.
Run Code Online (Sandbox Code Playgroud)
我试图通过其他地方找到的解决方案来使用RenderControl,但由于两个原因失败了; 1)它渲染了第一个单元格的整个HTML,2)当尝试使用以下消息访问第二个单元格时它仍然爆炸:
'LinkButton1' of type 'LinkButton' must be placed inside
a form tag with runat=server
Run Code Online (Sandbox Code Playgroud)
有一种简单的方法来获取我之后的LinkButton文本吗?转发器代码和C#可以在下面找到.
转发器代码:
<asp:Repeater ID="Rep1" runat="server">
<HeaderTemplate>
<table id="Table1" class="data">
</HeaderTemplate>
<ItemTemplate>
<tr id="Row" runat="server">
<td>Item #1</td>
<td><asp:LinkButton ID="LinkButton1" OnClick="DoSomething"
Text="Item #2" runat="server" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
Run Code Online (Sandbox Code Playgroud)
C#:
foreach (RepeaterItem item in Rep1.Items)
{
HtmlTableRow row = item.Controls[0].FindControl("Row") as HtmlTableRow;
foreach (HtmlTableCell cell in row.Cells)
{
if (cell.InnerText != string.Empty)
{
Console.WriteLine(cell.InnerText); …
Run Code Online (Sandbox Code Playgroud) 我有一个应该是一个相对简单的问题,我似乎无法找到答案.
当WCF执行对象的序列化时,它会自动应用"类型提示".对于Json服务,这会在每个复杂对象上产生一个额外的字段__type
.定义为的对象:
[DataContract]
public class SomeObject
{
[DataMember]
public string First { get; set; }
[DataMember]
public string Last { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
会序列化为:
{
"First" : "Hello",
"Last" : "World!",
"__type" : "SomeObject#MyNamespace.SomeObject"
}
Run Code Online (Sandbox Code Playgroud)
通常这不是问题.不幸的是,当您开始将类嵌套到相当大且复杂的结构中时,这会导致返回客户端的JSON响应大小的大量开销.
当然必须有一种方法来禁用这种行为,但我找不到一个(2007年Rick Strahl也没有回来 ......但是它是2010年,我希望有人已经想到这一点).
有人可以推荐最安全的方法,使用CSS为DIV TAG提供OPACITY VALUE吗?
埃里克
所以,我只是在Reflector周围试图找到HashSet的实现细节(基于这里的另一个问题的答案纯粹的好奇心)并注意到以下内容:
internal class TreeSet<T> : ICollection<T>, IEnumerable<T>, ICollection,
IEnumerable, ISerializable, IDeserializationCallback
Run Code Online (Sandbox Code Playgroud)
在不深入细节的情况下,它看起来像一个自平衡二进制搜索树.
我的问题是,有没有人知道为什么这堂课internal
?仅仅因为其他集合类型在内部使用它并隐藏了BST与普通群众的复杂性......还是我离开了基地?
我有一个能够插件(MEF)的应用程序.插件是导入服务的WPF UserControls.
用户可以从应用程序的主菜单中选择所需的插件.
为此,我使用以下循环:
foreach(IToolPlugin Plugin in ToolPlugins)
{
Plugin.Init();
MenuItem PluginMenuItem = Plugin.MenuItem; //New MenuItem but with Header set.
PluginMenuItem.Click += new RoutedEventHandler(delegate(object o, RoutedEventArgs e) { DoSomething(Plugin.Control);});
PluginsMenu.Items.add(PluginMenuItem);
}
Run Code Online (Sandbox Code Playgroud)
这对于单个项目非常好.但是,只要我有一个以上的插件,所有菜单项都会执行最后一个循环的委托.或者至少使用最后一个循环的Plugin.Control.
我怎样才能解决这个问题?
谢谢你的帮助.
我创建了一些查询,无法理解为什么结果不像我预期的那样.
我不明白为什么查询II和III不会返回相同的结果.我希望查询II返回查询I未选择的所有行.
我希望查询II和III能够给出相同的结果.在我看来,III的结果是正确的.
我确定我错过了什么,我只是不知道是什么.
这个例子:
表:
CREATE TABLE [dbo].[TestTable](
[TestTableId] [int] NOT NULL,
[ValueA] [int] NULL,
[ValueB] [int] NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
数据:
TestTableId ValueA ValueB
1 10 5
2 20 5
3 10 NULL
4 20 NULL
5 NULL 10
6 10 10
7 NULL NULL
Run Code Online (Sandbox Code Playgroud)
查询:
所有记录:从TestTable中选择*
I.选择查询:
select * from TestTable
where (ValueA = 10 or ValueA = 20) AND ValueB = 5
Run Code Online (Sandbox Code Playgroud)
结果:
TestTableId ValueA ValueB
1 10 5
2 20 5
Run Code Online (Sandbox Code Playgroud)
II.相同的查询,但不是
select * from …
Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×3
ado.net ×1
asp.net ×1
binary-tree ×1
closures ×1
collections ×1
css ×1
datareader ×1
delegates ×1
generics ×1
inheritance ×1
json ×1
lambda ×1
opacity ×1
sql ×1
t-sql ×1
theory ×1
wcf ×1