我正在使用EntityFramework 4.1.
我有以下型号:
public class User
{
[Key]
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public virtual User Creator { get; set; }
public virtual User LastEditor { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试生成我的数据库时,我收到此错误:
无法确定类型"用户"和"用户"之间关联的主要结束.必须使用关系流畅API或数据注释显式配置此关联的主要结尾.
但我也有这门课:
public class Course
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual User Creator { get; set; }
public virtual User LastEditor …Run Code Online (Sandbox Code Playgroud) c# orm entity-relationship entity-framework entity-framework-4.1
我有一个这样的课:
public class Foo
{
public int Bar { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
该类用于存储在NoSQL数据库中,因此我需要存储该Bar值.但是,我不想通过我的API公开这个值.所以我创建了一个继承Foo自我的API的类.
我ShouldSerializeBar按照我在这里找到的文档创建了该方法.
public class Foo2 : Foo
{
public bool ShouldSerializeBar()
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,不调用该方法.是否有针对此或其他方式实现此目的的解决方法?
我目前正在开始一个新的ASP.NET MVC项目,我们需要生成项目成本估算.
我们正在使用NHibernate,ASP.NET MVC 1.0和StructureMap.
客户希望能够填写有关项目的所有信息,信息在不同的页面中,我们需要在每个帖子之间保持不变.
客户端不希望在完成时选择将其保存在名称下,但我们希望将其保留在数据库中,即使他尚未保存它.因此我们有了创建"草稿模式"的想法,因此用户将开始处理他的项目,将填充所有页面,并且它将在"草稿模式"的基础上保留在数据库中.
但我们需要管理草稿,我的意思是,当用户开始编辑现有项目时,我们需要创建它的副本,将对象及其所有子项设置为草稿模式并在我们的数据库中创建它的副本.我们需要改变孩子的所有引用.
所以,我试图找到深度复制对象和更改所有引用的最佳方法,我宁愿不必为每个我必须复制的实体创建一个复制类,如果这是更通用的话可能.
如果您需要更多详细信息或有些不清楚的地方,请告诉我.
谢谢,
查尔斯
我在使用nuget.exe命令行工具时遇到了一个奇怪的问题.
我有一个控制台应用程序,它启动一个执行nuget命令行工具的进程.
这是输出:
nuget.exe pack Project.csproj -Prop Configuration=Release
Attempting to build package from 'Project.csproj'. Packing files from
'C:\Project\bin\Release'.
Run Code Online (Sandbox Code Playgroud)
它抛出一个未设置为对象实例的Object引用.例外.
但顺便说一句,我的进程WorkingDirectory是C:\ Project,所以文件路径没问题.
奇怪的是,当我使用标准的Windows命令行,cd进入.csproj文件夹并执行相同的命令时,正在创建nupkg文件.
如果我做:
cd ..
Run Code Online (Sandbox Code Playgroud)
并运行:
nuget.exe pack Project\Project.csproj -Prop Configuration=Release
Run Code Online (Sandbox Code Playgroud)
我得到的Object引用未设置为对象的实例.例外.
我的控制台应用代码是:
var process = new Process {
StartInfo = new ProcessStartInfo("nuget.exe",
"pack Project.csproj -Prop Configuration=Release")
{
WorkingDirectory = "C:\\Project",
UseShellExecute = false,
RedirectStandardInput = true,
}
};
Run Code Online (Sandbox Code Playgroud)