小编Chr*_*ris的帖子

实体框架无法使用复合键更新表中的数据(Oracle)

我们有一个Oracle表,其中包含三列的复合键.这些列通过实体框架数据模型正确映射到C#对象.当我们从数据库查询记录然后更新非键列时,我们总是会收到一条错误消息,说我们正在尝试更新主键(下面是测试的摘录):

var connection = new DbContextProvider(() => new DatabaseConnection()); 
var repo = new Repository(connection); 
var deltas = repo.Queryable<Deltas>().Where(d =>d.Volume.SubmissionId == 88921).ToList();
var deltaToUpdate = deltas.First(); 
deltaToUpdate.RecordedVolume = 0;
repo.Flush();  -- Does a context.SaveChanges() in background
Run Code Online (Sandbox Code Playgroud)

我们总是收到以下信息:

System.InvalidOperationException:属性"COPY_ID"是对象的密钥信息的一部分,无法修改.

COPY_ID是密钥的一部分,但是StoredGeneratedPettern = Identity,并且在事务中不会更改.

任何帮助赞赏.

这是完整的堆栈:

System.InvalidOperationException:属性"COPY_ID"是对象的密钥信息的一部分,无法修改.at Data.Objects.EntityEntry.VerifyEntityValueIsEditable(StateManagerTypeMetadata typeMetadata,Int32 ordinal,String memberName)

at System.Data.Objects.EntityEntry.GetAndValidateChangeMemberInfo(String entityMemberName,Object complexObject,String complexObjectMemberName,ref StateManagerTypeMetadata typeMetadata,ref String changingMemberName,ref Object changingObject)

at System.Data.Objects.EntityEntry.EntityMemberChanging(String entityMemberName,Object complexObject,String complexObjectMemberName)

at System.Data.Objects.EntityEntry.EntityMemberChanging(String entityMemberName)

at System.Data.Objects.ObjectStateEntry.System.Data.Objects.DataClasses.IEntityChangeTracker.EntityMemberChanging(String entityMemberName)

在System.Data.Objects.Internal.SnapshotChangeTrackingStrategy.SetCurrentValue(EntityEntry条目,StateManagerMemberMetadata成员,Int32序数,对象目标,对象值)

在System.Data.Objects.Internal.EntityWrapper`1.SetCurrentValue(EntityEntry条目,StateManagerMemberMetadata成员,Int32序数,对象目标,对象值)

在System.Data.Objects.EntityEntry.SetCurrentEntityValue(StateManagerTypeMetadata metadata,Int32 ordinal,Object userObject,Object newValue)

at System.Data.Objects.ObjectStateEntryDbUpdatableDataRecord.SetRecordValue(Int32 ordinal,Object value) …

c# oracle entity-framework

12
推荐指数
1
解决办法
1325
查看次数

工作单位,存储库和IDisposable

我一直在寻找在我正在开发的项目中实现这些模式.UoW具有数据库上下文,然后使用该上下文实例化许多存储库.我的问题是处理上下文.我见过很多文章都将存储库作为IDisposable,然后处理上下文.这让我感到困惑,我错过了什么,或者(在我的情况下)是否只是处理上下文的UoW?另外,我应该在我的存储库中实现IDisposable吗?

谢谢

克里斯

entity-framework unit-of-work repository-pattern

7
推荐指数
1
解决办法
2892
查看次数

使用Java从HTTPS URL下载文件

我已经编写了一些代码来从网站下载文件.该代码适用于测试http网址.一旦我将URL更改为https,我就会有一个连接超时.

System.setProperty("http.proxyHost","trproxy.rwe.com") ;
System.setProperty("http.proxyPort", "80") ;
Authenticator.setDefault (new MyAuthenticator("USER","PW"));
//URL url = new URL("http","www.treasury.gov",80,"/ofac/downloads/sdn.csv",new    sun.net.www.protocol.http.Handler());  THIS WORKS
URL url = new URL("https", "downloads.elexonportal.co.uk",443,"/bmradataarchive/download?key=MYKEY&filename="+filename,new sun.net.www.protocol.https.Handler());
url.openConnection();
InputStream reader = url.openStream();
FileOutputStream writer = new FileOutputStream("C:/downloads/"+filename);
Run Code Online (Sandbox Code Playgroud)

如果我将https网址复制到浏览器中,我会被问到我希望保存文件的位置,并且工作正常.任何帮助非常感谢.我试过这个 但是没用

谢谢克里斯

java url https download connect

5
推荐指数
0
解决办法
9101
查看次数

C#,MVVM,任务和UI线程

我们有一个根据MVVM模式构建的应用程序.在不同的时间,我们启动任务以转到数据库以检索数据,然后我们填充一个ObservableCollection,WPF控件与该数据绑定到该ObservableCollection.

我们有点困惑,当我们在任务线程而不是UI线程上填充ObservableCollection时,UI仍然正在更新/正常运行.我们期待一个错误,并且必须更改代码以填充UI线程上的集合.

这是一个危险的场景吗?我们应该填充UI线程吗?

获取数据的代码:

Task.Factory.StartNew(() =>
    UiDataProvider.RefreshForwardContractReport(fcrIdField.Value)
)
.ContinueWith(task => {
    if (task.Result.OperationSuccess)
    {
        // This updates the ObseravableCollection, should it be run on UI thread??
        RefreshReport(task.Result.OperationResult);
    }
});
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading task mvvm

5
推荐指数
2
解决办法
1万
查看次数