小编Nil*_*zor的帖子

实体框架中的多对多关系会导致无限循环

我在SQL Server中有一个具有多对多关系的数据模型.当Entity Framework模拟这种关系时,它通过创建一个双向列表引用来实现这一点,如下所示:

public class Class1
{
    public ICollection<Class2> Class2s {get;set;}
}

public class Class2
{
    public ICollection<Class1> Class1s {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在某些情况下(但不是全部),这似乎会导致无限循环.我有一个案例,当我调用Add()其中一个集合时,它会导致框架在两个类中的属性的get方法之间来回循环,有效地占用所有CPU并冻结应用程序.

有没有人经历过这样的事情?我该怎么做才能防止它发生?

PS:我正在使用Rab Hallett的Mocking Framework生成器来生成代码.不知道这是否相关.

更新1:它肯定与模拟框架有关

更新2:它不是一个无限循环,但它访问两个表中的所有元素 - 可能导致n*m访问.我会更多地了解它并回来

.net linq entity-framework

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

"坏IL范围"例外是什么意思?

什么特别导致异常消息"坏IL范围"?

我收到了来自我的客户的错误报告,但是我看不到异常类型.谷歌搜索这个文本产生了非常不同的结果,我怀疑这是.NET/C#中的一个非常低级别的东西,可以在许多不同的情况下发生.我认为在这种情况下IL是"中间语言".

那究竟是什么导致了这个例外,它的常见根本原因是什么呢?

.net c#

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

访问Hello-World Google Cloud Endpoint服务的URL是什么?

我已经使用此博客文章中Generate AppEngine BackEnd描述的方式在Eclipse中生成了Google Endpoint AppEngine项目.然而,该帖子没有描述的内容以及官方Google Docs描述得很差的是哪个URL我可以在本地访问该服务?

生成的服务有一个名为DeviceInfoEndpoint的生成端点.代码如下所示以及web.xml中的代码.鉴于我在本地端口8888上托管,我应该访问哪个URL listDeviceInfo()?我尝试过以下方法:

  • http://localhost:8888/_ah/api/deviceinfoendpoint/v1/listDeviceInfo => 404
  • http://localhost:8888/_ah/spi/deviceinfoendpoint/v1/listDeviceInfo => 405 GET不受支持
  • http://localhost:8888/_ah/spi/deviceinfoendpoint/v1/DeviceInfo => 405 GET(...)
  • http://localhost:8888/_ah/spi/v1/deviceinfoendpoint/listDeviceInfo => 405 GET(...)

DeviceInfoEndpoint.java的Exerpt:

@Api(name = "deviceinfoendpoint")
public class DeviceInfoEndpoint {

/**
 * This method lists all the entities inserted in datastore.
 * It uses HTTP GET method.
 *
 * @return List of all entities persisted.
 */
@SuppressWarnings({ "cast", "unchecked" })
public List<DeviceInfo> listDeviceInfo() {
    EntityManager mgr = getEntityManager();
    List<DeviceInfo> result = new ArrayList<DeviceInfo>();
    try …
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-cloud-endpoints

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

在单击功能上的F1时,如何让IntelliJ/Android Studio打开Android文档?

假设我有以下Android代码行:

MyClass myClass = (MyClass) intent.getExtras().getSerializable("SomeKey");
Run Code Online (Sandbox Code Playgroud)

当光标标记为"getSerializable"时,如何在点击F1时使IntelliJ/Android Studio打开浏览器并导航到以下URI?

http://developer.android.com/reference/android/os/Bundle.html#getSerializable(java.lang.String)

这可能是一个插件吗?

intellij-idea android-studio

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

使用主页按钮导航时,为什么我的活动会导致内存泄漏?

每当我使用Android手机上的"主页"按钮离开我的应用程序并使用启动器图标再次进入应用程序时,我的应用程序的初始活动就会重复.如果我重复例程五次,我的初始活动有五个实例.

我通过Eclipse中的堆转储对此进行了监视,确保在每次转储之前进行垃圾回收.这是我在直方图视图中询问GC Root的Merge Shortes Path以及我的activity类的所有引用时获得的视图:

Class Name                                                                     | Ref. Objects | Shallow Heap | Ref. Shallow Heap | Retained Heap
-------------------------------------------------------------------------------------------------------------------------------------------------
                                                                               |              |              |                   |              
android.view.ViewRootImpl$WindowInputEventReceiver @ 0x41408a80 Native Stack   |            1 |           32 |               224 |           184
class android.view.inputmethod.InputMethodManager @ 0x40d93e78 System Class    |            1 |           88 |               224 |           616
'- mInstance android.view.inputmethod.InputMethodManager @ 0x413422e0          |            1 |          112 |               224 |           296
   '- mServedView, mNextServedView android.widget.ListView @ 0x41331100        |            1 |        1 088 …
Run Code Online (Sandbox Code Playgroud)

android

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

如何使<input type ="date">在Chrome中以本地化格式显示日期?

我正在使用HTML5 <input type="date">,它在Chrome中呈现了一个丰富的输入控件,以格式显示日期MM/DD/YYYY.问题是我的应用程序期望在服务器端以本地化格式输入,这意味着MM.DD.YYYY.

有什么方法可以改变Chrome渲染方式并从日期控件中获取输入?

html5 google-chrome

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

Android Instrumentation测试没有从库项目中找到类

所以我NoSuchMethodError从Android Studio运行我的Activity/instrumentation测试,在代码行上试图从单元测试中调用库模块中的方法.

所以这是我的测试:

public class MainActivityTest extends ActivityInstrumentationTestCase2 {
    public void testMainActivity() {
        final MainActivity target = (MainActivity) getActivity();
        MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError
}
Run Code Online (Sandbox Code Playgroud)

这是什么交易?我已经将我的库定义为build.gradle中的"编译" - 依赖,并且编译得很好.该库也可以从主应用程序类中调用而不会出现问题.只有当我从测试中调用它时才会失败.我的应用程序和我的测试都在同一模块中.

我已经尝试手动运行clean任务,assembleDebug和assembleDebugTest任务.徒劳无功.

项目结构:

Root
 |---MyApp 
 |     |---src/main/...
 |     |---src/androidTest/...
 |----MyLibrary
Run Code Online (Sandbox Code Playgroud)

运行Android Studio v1.0.2 Gradle构建工具v1.0.0使用默认的Instrumentation测试运行器从AS的Run/Debug配置作为模块"MyApp"上的"Android Test"运行.

android android-testing

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

我可以在Android上将视图作为数据绑定BindingAdapter的输入吗?

我想在XML中建立一个ProgressBar和这样的WebView东西之间的关系:

    <ProgressBar
        android:id="@+id/progressBar"/>

    <WebView
        android:id="@+id/wvb_webView"
        app:attachedProgressBar="@{@id/progressBar}"/> 
Run Code Online (Sandbox Code Playgroud)

使用此代码,我可以创建一个BindingAdapter像这样的接线:

@BindingAdapter({"app:attachedProgressBar"})
public static void setAttachedProgressBar(WebView webView, @IdRes int progressBarId) {        
        ProgressBar progBar = (ProgressBar) DataBindingUtil.getBinding(webView).getRoot().findViewById(progressBarId);
        wireStuff(webView, progBar); 
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我不得不打电话给我findViewById.有没有什么办法可以重构XML和BindingAdapter直接引用ProgressBaras输入而不是@IdRes int

data-binding android android-databinding

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

如何在ASP.NET中使用SQLServer作为sessionState模式处理会话对象超时?

在ASP.NET应用程序中将SQL Server设置为状态处理程序时,会话超时是如何处理的,或者在何处?

从数据库加载会话对象后判断对象是否过期,或者SQL Server本身是否负责处理这个问题,是.NET框架吗?我怀疑(或甚至认为)后一种可能性的原因是,创建ASPState的脚本提到了一些关于ASPState_Job_DeleteExpiredSessions-element的内容.

如果它是一个SQL Server作业清理,这个作业多久会触发一次,它如何与web.config中的timeout参数对齐?

sql-server asp.net session session-state session-timeout

4
推荐指数
1
解决办法
3576
查看次数

需要帮助重构这个基本的async-await循环

所以我有一个支持"保存"方法的业务对象,该方法对某些设备执行了一些IO操作.然后,我有一个列表,列出了我想要批量异步保存的对象.我的代码现在看起来像这样:

    public async Task Save()
    {
        foreach (var element in Elements)
        {
            await element.Save();
        }
    }    
Run Code Online (Sandbox Code Playgroud)

现在这导致n了等待的数量,我知道每个等待都会导致一些CPU开销.我想消除这个,只有一个等待.我如何重构以实现这一目标?

c# async-await

4
推荐指数
1
解决办法
1611
查看次数