小编Daw*_*žan的帖子

在Code First中对外键进行级联删除

我无法让级联删除正常工作.这是我的外键表:

public class CoverageLevel
{
    public int Id { get; set; }
    public virtual MedicalPlan MedicalPlan { get; set; }  //foreign key
    public virtual VisionPlan VisionPlan { get; set; }    //foreign key
    public virtual DentalPlan DentalPlan { get; set; }    //foreign key
}
Run Code Online (Sandbox Code Playgroud)

我尝试了三种不同的方式.当我不使用任何流畅的API时,它会适当地设置表和外键,但级联删除不起作用.当我使用这段代码时:

modelBuilder.Entity<MedicalPlan>().HasMany(t => t.CoverageLevels).WithOptional.WillCascadeOnDelete();
Run Code Online (Sandbox Code Playgroud)

它创建了第二列,所以我有一个完全null MedicalPlan_Id,然后MedicalPlan_Id1它填充.我用这个时:

modelBuilder.Entity<MedicalPlan>().HasMany(t => t.CoverageLevels).WithOptional().HasForeignKey(d => d.MedicalPlan).WillCascadeOnDelete();
Run Code Online (Sandbox Code Playgroud)

我在创建数据库时遇到错误.如何正确设置级联删除?

c# entity-framework

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

cursor.getstring()在数据库中获取了错误的字段

所以这是我的代码:

public void onItemClick(AdapterView<?> listView, View view, int position, long id)
{
    Cursor cursor = (Cursor) listView.getItemAtPosition(position);

    int _id = cursor.getInt(0);
    String _recipe = cursor.getString(1);
    Intent intent = new Intent(Luzon1Activity.this,RecipeInstruction.class);
    intent.putExtra("id", _id);
    intent.putExtra("recipe", _recipe);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

这是我下一个活动的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.recipeinstruction);

    dbHelper = new Dbadapter(this);
    dbHelper.open();
    bg = (RelativeLayout) findViewById(R.id.relativeLayout1);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        id = extras.getInt("id");   
        recipe = extras.getString("recipe");
    }
    Toast.makeText(this, id+"\n"+recipe, Toast.LENGTH_SHORT).show();
    bg.setBackgroundResource(getImageId(this, recipe));
}
Run Code Online (Sandbox Code Playgroud)

我的问题在于这一部分: String _recipe = cursor.getString(1) …

java database android

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

NSNumber可能的内存泄漏

创建一个ARC新项目并在didFinishLaunchingWithOptions中注入此代码.

for (int i=0; i < 1000000; i++) {
    NSNumber* num = [NSNumber numberWithInt:i];
    NSLog(@"%@", num);
}

NSLog(@"over");
Run Code Online (Sandbox Code Playgroud)

应用程序的内存将增加.此外,在for循环结束时,内存不会减少.

但是,如果你替换相同的for循环:

NSNumber* num = [NSNumber numberWithInt:i];
Run Code Online (Sandbox Code Playgroud)

通过

NSNumber* num = [[NSNumber alloc] initWithInt:i];
Run Code Online (Sandbox Code Playgroud)

然后记忆将保持稳定.

这是预期的行为吗?

编辑:

好吧,让我们暂时把didFinishLaunchingWithOptions放在一边.您仍然可以放入viewDidLoad并删除零以便更快地到达for循环结束应用程序的内存将增长到~11 MB.当for循环结束时,内存不会减少.它仍然是~11 MB.

- (void)viewDidLoad {
    [super viewDidLoad];

    for (int i=0; i < 100000; i++) {
        NSNumber* num = [NSNumber numberWithInt:i];
        NSLog(@"%@", num);
    }

    NSLog(@"over");
}
Run Code Online (Sandbox Code Playgroud)

如果你去:

- (void)viewDidLoad {
    [super viewDidLoad];

    @autoreleasepool {
        for (int i=0; i < 100000; i++) {
            NSNumber* num = …
Run Code Online (Sandbox Code Playgroud)

xcode memory-leaks nsnumber

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

如何处理方向更改以便Fragment不加载?

EditTextUI中的一行获得焦点时,将DatePickerFragment启动用户输入日期.

在方向更改时,如果EditText线具有焦点和先前输入的日期(这样length() > 0),我不希望片段自动显示.

有没有办法修改或添加代码,以便如果新创建活动并且该EditText行具有焦点,它将不会自动启动 DatePickerFragment

做某事是不是一个好主意onResume()

或做的东西savedInstanceState()!=null

public class Activity extends AppCompatActivity {
...
EditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
...
    if (hasFocus && (EditText.getText().length() == 0)) {
       DatePickerFragment newFragment = new DatePickerFragment();
       newFragment.show(getSupportFragmentManager(), "datePicker");
    }
    else if (hasFocus && (EditText.getText().length() > 0)) {
       ...
       DatePickerFragment newFragment = new DatePickerFragment();
       newFragment.show(getSupportFragmentManager(), "datePicker");
    }
 }
});
}
Run Code Online (Sandbox Code Playgroud)

android android-datepicker android-fragments

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

如何在 Serilog 中使用 ReadFrom.AppSettings

我刚刚发现了 Serilog,我喜欢它。但是,我正在努力让它从 app.config 读取。

代码配置:

ILogger logger = new LoggerConfiguration()
    .ReadFrom.AppSettings()
    //.MinimumLevel.Verbose()
    .Enrich.WithProcessId()
    .Enrich.WithThreadId()
    .Enrich.WithMachineName()
    .Destructure.UsingAttributes()
    //.WriteTo.MSSqlServer(@"Server=EVDVWADBV1;Database=AppLog;Trusted_Connection=True;", "Logs")
    .CreateLogger();
Log.Logger = logger;
Run Code Online (Sandbox Code Playgroud)

注释掉的部分是我想从配置文件中读取的配置值。

配置文件包含:

<appSettings>
    <add key="serilog:minimum-level" value="Verbose"/>
    <add key="serilog:using" value="Serilog.Sinks.MSSqlServer"/>
    <add key="serilog:write-to:MSSqlServer.connectionString" value="Server=EVDVWADBV1;Database=AppLog;Trusted_Connection=True;"/>
    <add key="serilog:writeto:MSSqlServer.tableName" value="Logs"/>
    <add key="serilog:write-to:RollingFile.pathFormat" value="C:\Logs\myapp-{Date}.txt" />
    <add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 Serilog 包。

<package id="Serilog" version="1.5.14" targetFramework="net452" />
<package id="Serilog.Sinks.MSSqlServer" version="3.0.41" targetFramework="net452" />
Run Code Online (Sandbox Code Playgroud)

我还将它添加为我的控制台应用程序的第一行。我在控制台上没有看到任何错误。

Serilog.Debugging.SelfLog.Out = Console.Out;
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

.net c# serilog

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

使用sed在.bashrc文件中的别名列表末尾添加别名

我正在编写一个shell脚本,我想将其添加alias到文件alias列表的.bashrc末尾.我正在考虑一些sed可行的工作,只是不确定如何找到以下开头的最后一行alias,然后在下一行添加另一行alias.

bash shell

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

从ByteBuffer到双数组

我有一个ByteBuffer包含三个双重值,例如{1.0, 2.0, 3.0}.我现在拥有的是什么

double[] a = new double[3];
for (int i = 0; i < 3; i++) {
    a[i] = byteBuffer.getDouble();
}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但我更喜欢一步到位的解决方案

double[] a = byteBuffer.asDoubleBuffer().array();
Run Code Online (Sandbox Code Playgroud)

但这导致了一个例外:

java.lang.UnsupportedOperationException at java.nio.DoubleBuffer.array(...)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java nio bytebuffer nio2

4
推荐指数
2
解决办法
1360
查看次数

我们如何在SQOOP中自动增量导入?

我们如何在SQoop中自动化增量导入?

在增量导入中,我们需要--last-value从最后一个值开始导入,但我的工作是经常从RDBMS导入,我不想手动给出最后一个值,有什么方法可以自动化这个过程吗?

hadoop mapreduce sqoop

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

Vagrant,Virtualbox:未找到提供商'virtualbox'.我们现在会自动安装它

vagrant up在Windows 7上运行命令框(Vagrantfile存在于工作目录中)并获取消息:

未找到提供商'virtualbox'.我们现在会自动安装它......

已安装虚拟框并vbox_install_path正确设置了env变量.

在Intranet中工作,无法从Internet自动安装VB.

virtualbox vagrant

4
推荐指数
2
解决办法
6019
查看次数

WorkingDirectory的System.Diagnostics.Process问题

我正在使用第三方软件工具(命令行工具)将PDF文件合并在一起.使用C#我试图用来System.Diagnostics.Process运行可执行文件,但我想出了一些错误,具体取决于参数设置.

  • 如果UseShellExecute = trueRedirectStandardOutput = true我得到:
    • Process对象必须将UseShellExecute属性设置为false以重定向IO流.
  • 如果UseShellExecute = trueRedirectStandardOutput = false我得到:
    • 该系统找不到指定的文件
  • 如果useShellExecute = falseRedirectStandardOutput = true我得到:
    • 该系统找不到指定的文件
  • 如果UseShellExecute = falseRedirectStandardOutput = false我得到:
    • 该系统找不到指定的文件

正在运行的代码如下:

Process p = new Process();

p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.WorkingDirectory = "C:\\Program Files (x86)\\VeryPDF PDF Split-Merge v3.0";
p.StartInfo.FileName = "pdfpg.exe " + strFileNames.Trim() + " " 
                       + D2P_Folder_Converted + "\\" …
Run Code Online (Sandbox Code Playgroud)

system.diagnostics process processstartinfo

3
推荐指数
1
解决办法
8537
查看次数