CTP5附带的DbContext T4模板没有关联修正,并且并非所有属性都标记为虚拟.这是否意味着它与上下文断开连接时不支持ChangeTracking?首先,它是否支持ChangeTracking,即使在被Context(通过动态代理)跟踪时也是如此?我发现变更跟踪的要求是所有属性都应标记为虚拟.
与EF4 POCO生成器相比,我们是否正在使用DbContext生成器丢失任何功能?
非常感谢任何回应.
有谁知道POCO T4模板的任何调整版本,它会产生接口和类?即如果我在.edmx文件中有Movie和Actor实体,我需要获得以下类和接口.
interface IMovie
{
string MovieName { get; set; }
ICollection<IActor> Actors { get; set; } //instead of ICollection<Actor>
}
class Movie : IMovie
{
string MovieName { get; set; }
ICollection<IActor> Actors { get; set; } //instead of ICollection<Actor>
}
interface IActor
{
string ActorName { get; set; }
}
class Actor
{
string ActorName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
另外,为了防止我编写自己的实体,POCO代理(我需要它们用于延迟加载)是否可以使用如上所示的接口声明?
我知道我们正在比较两种不同的技术,但我想知道两者的优缺点.WCF现在已经存在了将近十年.到目前为止,java世界中没有类似的东西吗?
如何使用DbContext和使用Repository模式对CTP 5进行更新操作?早期使用EF 4.0,可以像下面这样完成.
_context.Customers.AddObject(item);
_context.ObjectStateManager.ChangeObjectState(item, System.Data.EntityState.Modified);
Run Code Online (Sandbox Code Playgroud)
有没有理由说为什么EF不提供更新"断开连接"实体的简单方法.我不想查询数据库并将所有属性复制到从查询返回的对象.换句话说,EF应该具有接收实体的更新方法(类似于Add方法).如果实体密钥已存在于数据库中,请使用当前值更新实体.即为什么我们应该"附加",然后将所有属性复制到附加对象.对我来说,复制实体的所有属性似乎是多余的,只是在"已断开连接"的对象已经存在时进行更新.
是否有直接从数据库生成代码的模板或工具?我想使用模型第一种情况,但不希望.edmx文件用于映射.有一个包含许多表的数据库,我不想为此编写所有类(我很懒).那么,是否有一个模板来生成代码并设置注释/使用流畅的api来自动地从现有数据库定义关系等?
这在以下场景中也会有所帮助.说,我正在使用带有POCO的.edmx,现在我不想在.edmx文件中使用映射.我想要代码中的映射.有一个工具或模板来生成现有数据库代码中的映射会很棒.
我开始学习EF 4.1.我认为"代码首先在版本2中成为模型,即在创建/发布数据库之后(在版本1中)并且需要一些更改".这是真的吗?我很乐意听到一些评论.谢谢.
我使用odp.net在Oracle中使用EntityFramework.参数化的sql查询不起作用.
var orderCode = "XYZ";
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = '{0}'"
, orderCode
);
Run Code Online (Sandbox Code Playgroud)
(要么)
var set1 = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = ':param'",
new OracleParameter("param", orderCode)
);
Console.WriteLine(set.Count() + ", " + set1.Count()); //Gives 0, 0
Run Code Online (Sandbox Code Playgroud)
但是,如果我有硬编码值,它就可以了.
var set = ctx.Database.SqlQuery<Order>(
"Select * from dwh.Orders where OrderCode = 'XYZ'",
orderCode
);
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?我在该视图中有150列.那是问题吗?
更新: 使用Oracle参数的查询有效.问题是我在:param变量周围有单引号.
话虽如此,带有"{0}"的热门查询不起作用.此外,以下linq查询不起作用.
var set = ctx.Orders.Where(a => a.OrderCode == orderCode); // Gets zero results.
Run Code Online (Sandbox Code Playgroud)
当我对值进行硬编码时,它可以正常工作并获取结果.
var set …Run Code Online (Sandbox Code Playgroud) 是否可以通过常规html表单提交和javascript发送自定义标头?Ajax(xmlhttprequest)不是一个选项,我可以使用iframes和javascript而不是xmlhttprequest.有可能吗?
我有一个wpf项目,我在一个绑定到文本框的属性上使用INotifyPropertyChanged.我正在使用任务(TaskParallelLibrary)在不同的线程上更新此值.它已正确更新,不会抛出异常.我认为它会抛出异常,因为它运行在后台线程而不是UI线程.当然,如果我直接使用UI元素,它会抛出异常.那么,INotifyPropertyChanged绑定机制是否会自动调度到UI线程?
这是我的属性代码.
private string _textProperty = "";
public string TextProperty
{
get
{
return _textProperty;
}
set
{
if (_textProperty != value)
{
_textProperty = value;
NotifyPropertyChanged("TextProperty");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的任务创建是
var task = new Task(() =>
{
TextProperty = "ABCD"; // Works.
// txtBox.Text = "ABCD"; // Throws an exception.
});
task.Start();
Run Code Online (Sandbox Code Playgroud)
和XAML中的文本框是 <TextBox Name="txtBox" Text="{Binding TextProperty}"/>
自从在EF 6.0中引入依赖注入以来,使用Repository模式仍然有意义吗?我认为存储库模式的主要用途是启用抽象和可测试性.现在,他们使用依赖注入完成.那么,我们可以跳过存储库模式并直接在服务层中使用上下文吗?
在Windows Phone 7中,有没有办法知道在导航到的页面中是否按下了背面?我知道我们可以拦截当前页面,但我需要知道在我导航到的页面中.即如果有2页说第1页和第2页,则在第2页按下后退按钮.我需要知道第1页是否按下了后退按钮.我需要在第1页的后退按钮上运行一些东西.
我想知道在C#继承中是否可以使用这种情况.
我们假设我们有3个班级.
public class Base
{
public abstract void SomeMethod(Base param);
}
public class ChildA : Base
{
public override void SomeMethod(ChildA param);
}
public class ChildB : Base
{
public override void SomeMethod(ChildB param);
}
Run Code Online (Sandbox Code Playgroud)
我不希望每次在子类方法中对基础参数进行类型转换.那么,这可能吗?
像下面这样实现的 future 是否会获得一个新线程?显然不是(参见下面的输出)。为什么?如果我希望我的代码在新线程上运行,我该怎么办?
package MyTest
import com.twitter.util._
import scala.language.postfixOps
object Test {
def test1 = Future {
println("BeforeTest", Thread.currentThread())
Thread.sleep(5000)
println("AfterTest", Thread.currentThread())
}
def test2 = test1 onSuccess { case _ => println("Future on success") }
def main(args: Array[String]): Unit = {
println("main", Thread.currentThread())
test2
println("main123", Thread.currentThread())
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
(主,线程[运行主-0,5,运行主组-0])
(BeforeTest,线程[run-main-0,5,run-main-group-0])
(AfterTest,线程[run-main-0,5,run-main-group-0])
未来成功
(main123,线程[run-main-0,5,run-main-group-0])
c# ×3
ajax ×1
asp.net-mvc ×1
entity ×1
grpc ×1
html ×1
iframe ×1
inheritance ×1
javascript ×1
linq ×1
odp.net ×1
poco ×1
scala ×1
twitter-util ×1
wcf ×1
windows ×1
wpf ×1