几个月以来,我一直在研究我的ASP.NET MVC应用程序.当我第一次开始使用它时,我使用的是Entity Framework 4.3(Code-First w/Migrations).当我这样做时,我遇到了一些问题,试图在我的MainClient表上进行更新.MainClient包含客户端的所有基本信息,与BPClient表具有1:1的关系,其中包含有关该客户端与BP模块的许可协议有关的更多特定信息.这两个都可以在选项卡控件中的同一页面上进行编辑.但是,在尝试将MainClient对象的EntityState更改为EntityState.Modified时,我一直收到以下异常:
System.InvalidOperationException : An object with the same key already exists
in the ObjectStateManager. The ObjectStateManager cannot track multiple objects
with the same key.
Run Code Online (Sandbox Code Playgroud)
我注意到在调试时,对象本身在进入我的Controller类进行保存时被认为是Detached.作为此问题的解决方法,我对此博客文章和此SO问题中的问题应用了类似的解决方案.以下是在以下MainClient对象中传递Edit方法的情况下,重新附加对象的代码后来看起来如何(凌乱,我知道)client:
var newClientObject = new MainClient { ClientID = client.ClientID };
Db.MainClients.Attach(newClientObject);
Db.Entry(newClientObject).CurrentValues.SetValues(client);
var bpClient = new BPClient { ClientID = client.ClientID, BaseClient = newClientObject };
if (client.BPClient != null)
{
Db.BostonpostClients.Attach(bpClient);
Db.Entry(bpClient).CurrentValues.SetValues(client.BPClient);
}
Db.SaveChanges()
Run Code Online (Sandbox Code Playgroud)
在所有测试用例中,这都很好用.直到最近.
最近,我升级了我的应用程序以使用Entity Framework 5(仍然使用Code-First).不过,当我再次测试MainClient编辑页面时,我发现了一些相当不稳定的行为.编辑时,某些字段可以毫无问题地保存.其他人永远不会致力于数据库.还有一些会坚持下去,但前提是它们是被编辑对象的唯一部分.我调试了Controller类中的DbContext,并且非常烦人地发现,不仅在页面上发生的更改被发送到Controller类,而且ObjectStateManager同时包含MainClient和BPClient对象.它与页面上所做的更改一样!顺便提一下,我在这里应该提一下,在调试时我没有收到一个错误,甚至在SaveChanges()之后也没有.
我决定尝试将代码恢复到原来的状态,也就是说这样做的逻辑方式:
Db.Entry<BPClient>(client.BPClient).State = EntityState.Modified;
Db.Entry<MainClient>(client).State …Run Code Online (Sandbox Code Playgroud) 我正在使用EF6 Code First.我有两节课:
public class Player
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[Key]
public int Id { get; set; }
[Required, MinLength(2, ErrorMessage = "Player name must be at least 2 characters length")]
public string Name { get; set; }
[Required]
public int TeamClubId { get; set; }
[Required]
public int TeamNationalId { get; set; }
[Required, ForeignKey("TeamClubId")]
public virtual Team Club { get; set; }
[Required, ForeignKey("TeamNationalId")]
public virtual Team National { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和:
public class Team
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public …Run Code Online (Sandbox Code Playgroud) 我目前正在使用EF 5 Code First编写计费应用程序,当我运行应用程序时遇到错误.
有问题的数据库对象如下:
[Table("Client")]
public class ClientBase
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ClientID { get; set; }
[Required]
public string ClientName { get; set; }
[Required]
public bool IsActive { get; set; }
[Required]
public string ClientContactName { get; set; }
[Required]
public string ClientContactEmail { get; set; }
[Required]
public DateTime ClientStartDate { get; set; }
[Required]
public string SalesforceID { get; set; }
public DateTime TerminatedDate { get; set; }
public string ClientStreet { get; set; …Run Code Online (Sandbox Code Playgroud) 我用Google搜索并发现在AWK 4.0之后我们可以通过在循环之前放置PROCINFO ["sorted_in"]命令来按照定义的顺序打印数组.例如
PROCINFO["sorted_in"] = "@ind_num_asc"
for( i in array)
print i, array[i]
Run Code Online (Sandbox Code Playgroud)
在AWK 4.0.2中,它可以工作.但是,我在AWK 3.1.3环境中尝试过,它没有用.这个早期版本的AWK不支持此功能吗?如何在AWK 3.1.3中实现这一目标?
我正在使用Rails 2.3.11和Bundler 1.0.10.
乘客返回错误
Could not find addressable-2.2.4 in any of the sources (Bundler::GemNotFound)
Run Code Online (Sandbox Code Playgroud)
我安装了手动寻址2.2.4和我捆绑它gem 'addressable', '2.2.4'做了一个bundle install和打捆说Using addressable (2.2.4).
仍有上述错误.
我正在使用Passenger作为Apache2模块.我在Ruby 1.9.2中使用RVM.乘客运行1.8.7.即使使用RVM将Ruby切换到1.8.7也无法解决问题.
我正在使用HttpClient 向http://www.pgu.donland.ru/php/Login.php发送帖子请求,并希望得到如下响应:
<?xml version="1.0" encoding="utf-8"?><resp status="1" uD="John" UID="2" e=""/>
Run Code Online (Sandbox Code Playgroud)
但不幸的是我一直在:
<?xml version="1.0" encoding="utf-8"?>
<resp status="1" uD="" UID="" e=""/>
这里发生了什么?
我正在使用带有HttpClient客户端字段的自定义类,在我的构造函数中我正在使用这些设置:
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(),
443));
HttpParams params = new BasicHttpParams();
params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE,
new ConnPerRouteBean(30));
params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
params.setParameter("http.socket.timeout", timeout * 1000);
params.setParameter("http.connection.timeout", timeout * 1000);
// params.setParameter("http.connection-manager.timeout", new
// Long(timeout * 1000));
params.setParameter("http.protocol.head-body-timeout", timeout * 1000);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
ClientConnectionManager cm = new SingleClientConnManager(params,
schemeRegistry);
this.client = new DefaultHttpClient(cm, …Run Code Online (Sandbox Code Playgroud) 我有以下功能,它接受员工ID并在员工处于活动状态时返回.
public employee GetEmployee(int empId)
{
using(var dbcontext = new dbentities())
{
return dbcontext.employee.Where(emp => emp.id == empId and emp.IsActive == true);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:我使用了一个using语句,因此每当using块结束时,在using语句中创建的对象将被释放.但是,在实际使用块结束之前,我已经编写了return语句,所以我的对象是否会被处理?我的方法是否正确?处置是如何发生的?
我已经为我的一些实体类实现了一个接口:
public partial class Order : IReportable
{
public string TableName { get { return "Order"; } }
}
public partial class Client: IReportable
{
public string TableName { get { return "Client"; } }
}
public interface IReportable
{
string TableName { get; }
}
Run Code Online (Sandbox Code Playgroud)
然后我将其添加到DbContext:
public virtual DbSet<IReportable> IReportable { get; set; }
Run Code Online (Sandbox Code Playgroud)
当我尝试查询实现此接口的所有表时(如此处所示):
var result = from reportabletable in db.IReportable
where reportabletable.TableName == table_name
select reportabletable
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
未映射"Report.DataAccess.IReportable"类型.使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型.验证类型是否已定义为类,不是原始类型还是通用类型,并且不从EntityObject继承.
我想在java 中LDAP使用spring来验证用户身份.我发现,对于配置LDAP有弹簧,我需要的URL,用户DN,密码及基值如下所示:
urls=ldap://127.0.0.1:389
userDn=cn=Directory Manager
password=abcd
base=dc=example,dc=com
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个userDn和base究竟是什么?这些意味着什么?我们需要在这个配置中指定哪个userDn值?
我现在正在学习C++并且一直在试验课程,以便了解它们的工作方式.我之前只用Java编写过类.
在我的代码中,我有一个类定义和一个要测试的驱动程序.在评论中我提到了什么有效,什么没有.我真的想知道为什么以一种方式实例化对象,但在其他方面我得到错误.它是编译器,make文件还是类代码?构造函数/默认构造函数?当我将我的代码与教科书中的其他代码进行比较时,我无法看到我出错的地方.
在Linux Mint 13上使用:code :: blocks 10.5.
头文件:
#ifndef ENEMY_H
#define ENEMY_H
#include <string>
using namespace std;
class Enemy
{
public:
Enemy();
Enemy(int, int, string);
~Enemy();
string display();
// setter and getters:
int getHP();
void setHP(int);
int getX();
void setX(int);
int getY();
void setY(int);
string getName();
void setName(string);
private:
int hitpoints;
int x_pos;
int y_pos;
string name;
};
#endif // ENEMY_H
Run Code Online (Sandbox Code Playgroud)
成员函数定义:
#include "Enemy.h"
#include <iostream>
#include <string>
// default ctor
Enemy::Enemy()
{
cout << "Creating enemy with default …Run Code Online (Sandbox Code Playgroud)