我们有一个小的旧应用程序,它将数据从一个服务器传输到另一个服务器(使用Entity Framework 5.0和SQl服务器)并生成报告问题,即它在传输数据时。我得到了(" InnerException = {"字符串或二进制数据将被截断。\ r \ n语句已被终止。"}" ..
关于某些数据......但如果我想用" id"输入该特定数据使用相同的应用程序,它插入它没有问题。我在某处读到这是EF(5.0)的问题,但我不确定所以请让我知道。
答案 0 :(得分:1)
您有一个指定长度的char / varchar / nchar / nvarchar列。您正在插入一个值,其长度大于指定的长度。
当您从旧服务器读取它时,您应该使用defmodule MyStruct do
defstruct [:x, :y, valid?: false]
# We want `x` and `y` to always be integers.
def new(x, y) when is_integer(x) and is_integer(y) do
{:ok, %__MODULE__{x: x, y: y, valid?: true}}
end
def new(_, _), do: :error
def print(%__MODULE__{x: x, y: y, valid?: true}) do
IO.inspect {x, y}
end
end
defmodule Main do
def main do
IO.inspect MyStruct.new(1, 2)
IO.inspect MyStruct.new(1, 2.3)
{:ok, a} = MyStruct.new(1, 2)
MyStruct.print(a)
try do
# This will throw an error because `valid?` will be false.
MyStruct.print(%MyStruct{})
rescue
e -> IO.inspect e
end
# This however will work and there's no way to stop it.
MyStruct.print(%MyStruct{x: "x", y: "y", valid?: true})
end
end
Main.main
从源获取前X个字符(其中X是数据库列长度)。如果这样做,您的错误将会停止。