我擅长c#,对oracle和dotnet cli有点模糊。
我想做的是,从命令行创建一个控制台应用程序,并从命令行创建一个EF模型,"数据库优先"。
我已经通过visual studio得到了这个工作,即创建一个控制台应用程序,添加包Oracle.ManagedDataAccess.EntityFrameworkOracle。ManagedDataAccess
创建"数据连接"到我的oracle数据库。
添加一个ado.net实体数据模型,并使用向导选择一个表,并应用它,它为我创建了一个模型,然后我可以用。
查询数据库。那么从命令行?
dotnet tool install --global dotnet-ef
dotnet tool update --global dotnet-ef
dotnet new console
dotnet add package Microsoft.EntityFramework.Design
构建它dotnet构建
和它的好(不奇怪)
然后,我完全被"manageddataaccess"one_answers"manageddataaccess"之间的差异所迷惑。和oracle。entityframeworkcore ....
所以你选择任何一种方式(它仍然会失败)。
dotnet add package Oracle.EntityFrameworkCore
现在…
dotnet build
和NU1107版本冲突。关系…
如果安装显式版本,则使用"Oracle。EntityFrameworkCore 3.19.80需要...."旧版本....所以这些东西不能一起工作。
任何想法?
如果你继续(这只是一个警告!)并尝试脚手架,那么不出所料,它会失败,因为某种方法未发现错误(显然是因为我们得到了错误的包)。
所有在线文档似乎都在visual studio中使用包管理器做了一些事情,这对我来说没有任何用处,我希望能够从命令行生成构建脚本的这些代码。
(实际上让文档引用CLI运行要显式得多)。
好吧,所以问题是版本(我可以说几乎完全缺乏清晰的文档/示例)
这个工作(至少它脚手架表我想,是否有更多的问题下游我不知道)
dotnet tool install --global dotnet-ef
dotnet tool update --global dotnet-ef
dotnet new web -f netcoreapp3.1
dotnet add package Microsoft.EntityFrameworkCore --version 3.1.8
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 3.1.8
dotnet add package Oracle.EntityFrameworkCore --version 3.19.80
dotnet ef DbContext scaffold "Data Source=myserver:1521/mydatabase; User ID=me;Password=mypassword;" Oracle.EntityFrameworkCore -t ATABLE
我可以试试paket而不是nuget,看看它是否能更自动地解决依赖关系,而不是我必须把它们拼凑在一起。