小编Mar*_*all的帖子

如何在C#应用程序中设置TNSNAMES文件的正确路径?

这是我的问题:我在C#中使用ODP.NET dll的程序:oci.dll,ociw32.dll,Oracle.DataAccess.dll,orannzsbb11.dll,oraocci11.dll,oraociicus11.dll,OraOps11w.dll.

我有2台电脑.首先安装完整的ODAC包,然后安装第二个包.但我在exe目录中都需要dll,所以ODAC不是问题(我认为).这些计算机之间的区别是TNSNAMES文件的路径.第一个:C:\ app\OraHome_1\Network\admin\Second:C:\ Oracle\product\11.2.0\client_1 \network\admin

并在第一个CPU程序工作正常.但是在具有相同连接字符串的第二个上,无法打开连接(ORA-12154).使用SQL Plus,我可以在两台计算机上连接.

那么,我怎样才能展示我的程序通往TNSNAMES的正确途径?

c# oracle tnsnames

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

我什么时候需要在 EF 的 DbContext 中指定 DbSet?

我有点困惑。直到今天,我认为每个表(由 EF 使用)都必须在DbContext类中指定。但看起来我需要一个!真的吗?

让我解释一下,这是我的 DbContext:

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("name=MyDbContext")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer<MyDbContext>(null);
        base.OnModelCreating(modelBuilder);
    }    

    public DbSet<Table1> Table1 { get; set; }
    public DbSet<Table2> Table2 { get; set; }
    public DbSet<Table3> Table3 { get; set; }
    public DbSet<Table4> Table4 { get; set; }
    public DbSet<Table5> Table5 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是两个示例表,连接 1:many

[Table("Table1")]
public class Table1
{
    [Key]
    [Column("Table1Id", TypeName = "uniqueidentifier")] …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net entity-framework dbcontext

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

参数是否可选,具体取决于之前的参数

我有两种方法:

Foo(int a, bool useDb)
Foo(int a, bool useDb, DbContext dbContext)
Run Code Online (Sandbox Code Playgroud)

有没有办法将它作为一种方法,用这些规则?
if useDb为true dbContext是强制性的,
如果useDb为false dbContext则是可选的

编辑:

只是一个编辑来澄清,我正在尝试做什么:在业务/服务层,我有ItemService方法GetItemStatus.它连接到数据库,获取数据并计算状态.

没什么特别的.它创建了一个DbContext(EF6.0),完成并处理它.标准.但是如果我想将GetItemStatus用作不同事务的一部分呢?哈!?我需要在内部传递DbContext并且不要显然处理它.我创建了这样的东西:

    public ItemStatus GetItemStatus(int itemId, OfficeContext fni = null)
    {
        bool shouldBeDisposed = (fni == null) ? true : false;
        if (shouldBeDisposed) fni = ContextFactory.CreateOfficeContext();

        try
        {

            Do the stuff...

        }
        finally
        {
            if (shouldBeDisposed) fni?.Dispose();
        }

        return ...
    }
Run Code Online (Sandbox Code Playgroud)

但现在我有点害怕,因为如果有人打电话:

GetItemStatus(123456);

......他忘了添加DbContext.我不确定他是否真的意味着它.Altoguh它应该不那么糟糕.他将创造新的并处理它.

但我正在考虑最好的方法,以确保开发人员不会犯错误."万无一失"的方式.

.net c#

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

标签 统计

c# ×3

.net ×2

asp.net ×1

dbcontext ×1

entity-framework ×1

oracle ×1

tnsnames ×1