我无法让级联删除正常工作.这是我的外键表:
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)
我在创建数据库时遇到错误.如何正确设置级联删除?
所以这是我的代码:
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) …
创建一个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) 当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) 我刚刚发现了 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)
我错过了什么?
我正在编写一个shell脚本,我想将其添加alias到文件alias列表的.bashrc末尾.我正在考虑一些sed可行的工作,只是不确定如何找到以下开头的最后一行alias,然后在下一行添加另一行alias.
我有一个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)
我究竟做错了什么?
我们如何在SQoop中自动化增量导入?
在增量导入中,我们需要--last-value从最后一个值开始导入,但我的工作是经常从RDBMS导入,我不想手动给出最后一个值,有什么方法可以自动化这个过程吗?
我vagrant up在Windows 7上运行命令框(Vagrantfile存在于工作目录中)并获取消息:
未找到提供商'virtualbox'.我们现在会自动安装它......
已安装虚拟框并vbox_install_path正确设置了env变量.
在Intranet中工作,无法从Internet自动安装VB.
我正在使用第三方软件工具(命令行工具)将PDF文件合并在一起.使用C#我试图用来System.Diagnostics.Process运行可执行文件,但我想出了一些错误,具体取决于参数设置.
UseShellExecute = true和RedirectStandardOutput = true我得到:
UseShellExecute属性设置为false以重定向IO流.UseShellExecute = true和RedirectStandardOutput = false我得到:
useShellExecute = false和RedirectStandardOutput = true我得到:
UseShellExecute = false和RedirectStandardOutput = 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)