我正在学习存储库模式,正在阅读存储库模式,包括实体框架4.1和代码优先 和通用存储库模式 - 实体框架,ASP.NET MVC和单元测试三角 关于它们如何使用实体框架实现存储库模式.
话
•从上层隐藏EF
•使代码更易于测试
使代码更易于测试我理解,但为什么要从上层隐藏EF?
看看它们的实现,似乎只是用实体方法包装实体框架来查询实体框架.实际上是这样做的原因是什么?
我假设是为了
我理解正确吗?
如果我写一个DataAccessLayer,这是一个有方法的类
QueryFooObject(int id)
{
..//query foo from entity framework
}
AddFooObject(Foo obj)
{
.. //add foo to entity framework
}
......
QueryBarObject(int id)
{
..
}
AddBarObject(Bar obj)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这也是一个存储库模式吗?
假人的解释会很棒:)
标题为,我的意思如下:
<Style TargetType="{x:Type TextBlock}"
TargetType="{x:Type Label}"
TargetType="{x:Type Button}" >
Run Code Online (Sandbox Code Playgroud)
这实际上是为了使用第三方控件,我继承了他们的类.但是模板不适用于SubClass,因为TargetType
它位于基类上.所以我想设置多个TargetType
s以使它能够同时申请.
有很多关于如何使用沙盒测试器帐户测试应用内购买收据验证的示例.
但付费应用程序本身的收据如何?我们如何在开发环境中获得App Receipt?
我想做两件事:
防止非购买应用程序的用户运行我们的应用程序的非法复制.正如我所看到的那样,检测到连接的iTune帐户的应用程序并不拥有应用程序(它向用户显示警告他们没有应用程序,但是他们无法阻止用户继续使用该应用程序)
将应用购买收据发送到我们的服务器.我们想知道他们何时购买我们的应用程序,他们带来了什么版本的应用程序.
所以考虑如下:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
这个xaml将允许WrapTextBlock
文本换行,这样做,WrapTextBlock
将占用所有空间并NotWrapTextBlock
向右推.
但我想要做的是尽量WrapTextBlock
减少占用空间,然后NotWrapTextBlock
向右推动WrapTextBlock
并用空的空间填充右侧.这意味着以下内容:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
但这里的事情是,现在文本 …
我正在尝试学习P/Invoke,所以我在C++中创建了一个简单的dll
KingFucs.h:
namespace KingFuncs
{
class KingFuncs
{
public:
static __declspec(dllexport) int GiveMeNumber(int i);
};
}
Run Code Online (Sandbox Code Playgroud)
KingFuns.cpp:
#include "KingFuncs.h"
#include <stdexcept>
using namespace std;
namespace KingFuncs
{
int KingFuncs::GiveMeNumber(int i)
{
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
所以它编译,然后我将这个DLL复制到我的WPF的调试文件夹中,代码如下:
[DllImport("KingFuncDll.dll", EntryPoint = "GiveMeNumber", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern int GiveMeNumber(
int i
);
Run Code Online (Sandbox Code Playgroud)
并在按钮单击中调用它:
private void Button_Click(object sender, RoutedEventArgs e)
{
int num = GiveMeNumber(123);
}
Run Code Online (Sandbox Code Playgroud)
但它给了我例外:
无法在DLL"KingFuncDll.dll"中找到名为"GiveMeNumber"的入口点.
真的......我做错了什么......显然能找到DLL,否则会是另一个例外.但我的方法名称完全一样......我想不出其他原因.
正如标题,我看到similiar问题的夫妇本或本在左右,但我没有看到它的解决方案.
我知道如果我需要绑定到code-beind,我需要设置 Datacontext = this
但我的问题是我的datacontext已经绑定到我的ViewModel,但我想使用在code-beind中定义的Command进行一些UI操作.
是否可以在xaml中绑定它?如果是这样,怎么样?
编辑:我确实尝试了以下内容:
<Window x:Class="WpfApplication3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" x:Name="_Root">
<Grid x:Name="hellogrid">
<TextBlock x:Name="myTextBlock" Text="AAAA"/>
<Button Margin="82,119,121,120" Name="button2" Content="{Binding Path=Text, ElementName=myTextBlock}"/>
<Button Margin="82,72,121,0" Name="button3" Content="{Binding Path=MyText, ElementName=_Root}" Height="23" VerticalAlignment="Top" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
public partial class Window1 : Window
{
public string MyText { get; set; }
public Window1()
{
InitializeComponent();
MyText = "ABC";
}
}
Run Code Online (Sandbox Code Playgroud)
我可以看到Button2显示AAAA
,但Button3没有显示任何内容....
我与我的经理进行了讨论,他说tcp比http更快,因为tcp在低于http的层上工作.
然后我记得我在大学里学到的OSI模型,所以我认为他的意思是因为http工作在应用层,但tcp工作在传输层(下面是2层)所以更快......
所以我的问题是:
较低层的工作速度是否比上层更快是因为在两台计算机之间进行数据传输时需要访问的层数较少?
如果是这样,那就意味着当我们使用tcp(即使用WCF)时,通信将从传输层开始=>向下到物理层=>另一台计算机的物理层=>到传输层?但是我仍然需要通过应用程序来理解数据,所以仍然需要进入Application层?
提前致谢.
我正在阅读MSDN中的这个UpdateLayout()方法.
它说:
确保为布局正确更新此元素的所有可视子元素.
但我不明白布局没有正确更新是什么意思.
我已经使用Silverlight/WPF超过一年了,但我还没有使用过这种方法一次.
那么有人可以给我一个需要使用这种方法的例子吗?所以我真的能理解它的作用以及何时使用它?
我在HttpResponseHeaders中看到的唯一方法是Add,它采用字符串类型的字符串类型.我只是想知道.NET在字符串中提供了HttpResponseHeader类型的列表吗?
所以我可以这样做:
HttpResponseMessage response = Request.CreateResponse.........;
response.Headers.Add(xxxxx.ContentRange, "something");
Run Code Online (Sandbox Code Playgroud)
我可以看到HttpResponseHeader中有一个Enum列表,但是它没有提供相应的字符串值...
即HttpResponseHeader.ContentRange,但正确的标题字符串应为Content-Range
如果我错了,请纠正我......
我了解整数大小,PHP_INT_MAX
取决于平台。
在 64 位系统上,我可以得到:
$large_number = 9223372036854775807
Run Code Online (Sandbox Code Playgroud)
从我从此处的 PHP 文档示例 3 中读取的内容来看,当整数溢出时,PHP 将整数处理为浮点数,精度约为 14 位小数,即:
Unsigned Int64: 18446744073709551615
PHP will handles as: 1.844674407371E+19
Run Code Online (Sandbox Code Playgroud)
所以似乎所有的精度都只保持在 Signed Int64 的最大值。
这真的只是 PHP 的一个限制而我对此无能为力吗?