我正在使用Entity Framework 4.0处理WPF应用程序.当我尝试保存对象时,我得到了一个主键异常,但主键是一个AutoIncremented字段,我无法理解异常的原因.
所以在尝试了这个和那个,以及一些调试和使用SQL分析器后,我发现在插入我的对象之前,必须在父表中插入一条记录,因为我设置了该对象的导航属性.
所以关键是如果尝试插入Employee对象并将其部门设置为Employee.Department = deptObject,则将新记录设置为插入部门对象.
请告诉我某些导航属性对象不会插入数据库,任何属性或任何方法,Anything.
谢谢
对于客户端,我们正在创建的系统必须支持以下内容:
- 必须能够运行多个工作流,以及具有不同上下文(不同数据/业务对象)的相同工作流的多个实例.
- 某些工作流程将长时间运行,涉及多个用户/客户端会话并等待外部用户输入.因此,工作流必须能够持久化并响应来自客户端应用程序的某些信号.这也意味着必须在服务器应用程序上执行工作流程(对吗?).
- 我希望能够在服务器应用程序上运行各种工作流程,并且我不希望在工作流程更改时重新部署服务器应用程序.
我的第一个想法是Workflow Services.经过大量研究后,我得出结论认为这不是正确的道路,因为Workflow Services基本上可以在客户端应用程序中启动的工作流程中执行远程位置的活动.它是否正确?或者我可以在上面的场景中使用Workflow Services吗?大多数示例和/或教程基本上是一个ReceiveSignal/Send组合,其间有一些逻辑.
基本上我想(从客户端应用程序)启动具有特定上下文的工作流的开始(在工作流服务器应用程序中).
什么是最好的方法?
很感谢任何形式的帮助!
我是3层架构的新手,下面是我的DAL代码
public static int Insert(string firstname, string lastname, DateTime dob, string gender,string email, string password)
{
// bool flag = false;
SqlParameter pid;
SqlParameter result;
SqlConnection con = Generic.DBConnection.OpenConnection();
try
{
SqlCommand cmd1 = new SqlCommand("Insertreg", con);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@FirstName", firstname);
cmd1.Parameters.AddWithValue("@LastName", lastname);
cmd1.Parameters.AddWithValue("@Dob", dob);
cmd1.Parameters.AddWithValue("@Gender", gender);
cmd1.Parameters.AddWithValue("@EmailId", email);
cmd1.Parameters.AddWithValue("@Password", password);
result = cmd1.Parameters.Add("@result", System.Data.SqlDbType.Int);
result.Direction = System.Data.ParameterDirection.Output;
pid = cmd1.Parameters.Add("@id", System.Data.SqlDbType.Int);
pid.Direction = System.Data.ParameterDirection.Output;
return cmd1.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
在BAL中
public …Run Code Online (Sandbox Code Playgroud) PagedList是一个分页库.
_dbContext.Products.ToList().ToPagedList(1, 25);
Run Code Online (Sandbox Code Playgroud)
上面的代码将在第1页的数据库中获得前25条记录.
问题是该ToList()调用将获取数据库中的所有记录.然后ToPageList()呼叫将选择前25个记录.
如何将EF与PagedList结合使用,以便只获取数据库中的前25条记录?并没有获得所有记录,然后采取前25记录.
PS:我应该编写自己的Paging库还是使用在线库?请建议我任何其他图书馆.
如何保存我在桌面上创建的txt文件?
这是代码:
void CreaTxtBtnClick(object sender, EventArgs e){
string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
filePath = filePath + @"\Error Log\";
TextWriter sw = new StreamWriter(@"Gara.txt");
int rowcount = dataGridView1.Rows.Count;
for(int i = 0; i < rowcount - 1; i++){
sw.WriteLine(
dataGridView1.Rows[i].Cells[0].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[1].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[2].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[3].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[4].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[5].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[6].Value.ToString() + '\t' +
dataGridView1.Rows[i].Cells[7].Value.ToString() + '\t'
);
}
sw.Close();
MessageBox.Show("File txt creato correttamente");
}
Run Code Online (Sandbox Code Playgroud)
我按照这些指示思考
Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
filePath = …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的签名的方法
void RefreshMethod<T>(IEnumerable<T> lst, string propertyName) where T:class
{
Type type = typeof(T);
PropertyInfo property = type.GetProperties().Single(u => u.Name == primaryKeyProperty);
//query goes here
}
Run Code Online (Sandbox Code Playgroud)
现在我想查询该集合以获取其所有值
propertyName <0
在一个简单的场景中,它就像这样容易
lst.where(u=>u.ID<0)
Run Code Online (Sandbox Code Playgroud)
但在这里我没有那个ID属性,但有相应的"PropertyInfo"对象.
我应该怎么做到这一点.
善意的指导
通过构造函数注入手动连接依赖项有什么不好,使用DI容器(container.Resolve<T>())的那个有什么好处呢?
我的意思是,除了每次需要创建依赖对象并为其提供所有依赖项时必须再键入一些键击的事实.
实际上,拥有一个像DI Container这样的中央注册表可能会让你感到更加困惑并从中获取控制权.
我已经有了这个问题和另一个(下面)有一段时间,但我猜Mark Seemann的文章名为Service Locator是一个反模式让我最终在这里输入这个问题.
所以,我的另一个问题是:
如果某个依赖项本身需要一些动态(比如用户提供的)输入,那该怎么办?说,像:
class Dependency : IDependency
{
public Dependency(string userInput) { }
}
class Dependent
{
IDependency _dependency;
void DoSomething()
{
var container = new MyFavoriteContainerFromTheMarket();
Console.Write("Hey, user. How are you feeling?");
var userInput = Console.ReadLine();
// Do DI containers have overloads for Resolve instead of for Register
// that accept parameters to be passed to constructors?
// In other words, what if I don't know the constructor parameter …Run Code Online (Sandbox Code Playgroud) c# design-patterns dependency-injection ioc-container inversion-of-control
我正在使用C#中的静态类,我正在尝试使用Control.RenderControl()一个字符串/标记表示Control.
不幸的是,控件(和所有子控件)使用事件冒泡来填充某些值,例如,在实例化时,然后调用RenderControl()以下内容:
public class MyTest : Control
{
protected override void OnLoad(EventArgs e)
{
this.Controls.Add(new LiteralControl("TEST"));
base.OnLoad(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我返回一个空字符串,因为OnLoad()从未被解雇过.
有没有办法可以调用'假的'页面生命周期?也许使用一些虚拟Page控制?
好的......我已经搜遍了互联网,但也许我输错了或者我不知道.无论如何,我所拥有的是两个窗体(我用C#编码).Form1和Form2.在Form1中我有一个按钮.单击此按钮可打开Form2.我正在使用:
Form2 frm2 = new Form2();
frm2.Show();
Run Code Online (Sandbox Code Playgroud)
我想使用frm2.Show因为我想打开这个表单的多个实例.
现在的事情是我只想打开这个表单的4个实例.
如果我单击Form1的按钮,它应该打开它.让我说我点击了3次,然后Form2应该打开3次.当我关闭其中2个时,我现在只剩1个.然后再次单击它3次,第4次它不应该打开Form2.
有没有办法知道有多少形式的实例?因为一个
if statement
Run Code Online (Sandbox Code Playgroud)
不会做这个工作.
复选框名为'select all'为checkedlistbox.当unCheck checkedlistbox中的任何项目时,取消选中'select all'checkebox,下面的代码可以完成这项工作.
但是当在checkedlistbox中检查所有项目时,它应该检查'全选'.
for (int i = 0; i < checkedListBox1.Items.Count; i++) {
if (!checkedListBox1.GetItemChecked(i))
checkBox1.Checked = false;
}
Run Code Online (Sandbox Code Playgroud)