Кто-нибудь задается вопросом, как это сделать в ядре EF:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
..... rest of the code.....
Как Дэвид Аренбург упоминает в комментарии , ответ можно найти здесь здесь . Исправлена ошибка в версии 1.9.6, но исправление ввело этот недостаток.
В конце функции следует вызвать DT[]
, чтобы предотвратить это поведение.
myfunction <- function(dt) {
dt[, z := y - x][]
}
myfunction(mydt) # prints immediately
# x y z
# 1: 1 5 4
# 2: 2 6 4
# 3: 3 7 4
Извините, если я не должен публиковать что-то здесь, это не ответ, но мой пост слишком длинный для комментария.
Я хотел бы указать, что решение janosdivenyi добавление конечного []
в dt
не всегда дает ожидаемые результаты (даже при использовании data.table 1.9.6 или 1.10.4), как я делаю ниже.
Приведенные ниже примеры показывают, что если dt
- последняя строка в функции, которая получает желаемое поведение без присутствия конечного []
, но если dt
не находится в последней строке в функции, то для получения желаемое поведение.
В первом примере показано, что без конечного []
на dt
мы получаем ожидаемое поведение, когда dt
находится на последней строке функции
mydt <- data.table(x = 1:3, y = 5:7)
myfunction <- function(dt) {
df <- 1
dt[, z := y - x]
}
myfunction(mydt) # Nothing printed as expected
mydt # Content printed as desired
## x y z
## 1: 1 5 4
## 2: 2 6 4
## 3: 3 7 4
Добавление конечного []
в dt
дает неожиданное поведение
mydt <- data.table(x = 1:3, y = 5:7)
myfunction <- function(dt) {
df <- 1
dt[, z := y - x][]
}
myfunction(mydt) # Content printed unexpectedly
## x y z
## 1: 1 5 4
## 2: 2 6 4
## 3: 3 7 4
mydt # Content printed as desired
## x y z
## 1: 1 5 4
## 2: 2 6 4
## 3: 3 7 4
Перемещение df <- 1
после dt без конечного []
дает неожиданное поведение
mydt <- data.table(x = 1:3, y = 5:7)
myfunction <- function(dt) {
dt[, z := y - x]
df <- 1
}
myfunction(mydt) # Nothing printed as expected
mydt # Nothing printed unexpectedly
Перемещение df <- 1
после dt с конечным []
дает ожидаемое поведение
mydt <- data.table(x = 1:3, y = 5:7)
myfunction <- function(dt) {
dt[, z := y - x][]
df <- 1
}
myfunction(mydt) # Nothing printed as expected
mydt # Content printed as desired
## x y z
## 1: 1 5 4
## 2: 2 6 4
## 3: 3 7 4
return(x)
, то возвращается последнее значение в функции. df <- 1
возвращает значение 1
невидимо , while
DT [, x: = y] [] `возвращает DT
, печатается.
– Frank
20 March 2017 в 16:05
DT[]
требуется только тогда, когда печать данных. table подавлена, поэтому при использовании функций:=
илиset*
– jangorecki 7 October 2015 в 10:39