SQLite and SubSonic 3.0 Not Generating from T4 Template? - subsonic

I cannot get the latest SubSonic with SQLite ActiveRecord to work.
I grabbed the latest 3.0x bits from the web site on July 15th.
I made a brand new WPF project with the namespace 'MineSpace'.
I created a SQLite v3 database with 5 tables and FKey relationships (no triggers).
I added ActiveRecord.tt, Settings.ttinclude, SQLite.ttinclude to the project.
I updated my app.config (this is for a WPF app) with
a. configSection for SubSonicService
b. DbProviderFactories for my "SQLiteDataProvider".
c. connectionsStrings added "Conn01"
d. Added SubSonicService section with defaultProvider of "SQLiteDataProvider"
e. Set the complete absolute path to my .db file.
Edited Settings.ttinclude with
a. Namespace = "MineSpace"
b. ConnectionStringName "Conn01"
c. Databasename = "CoreInfo"
Right-click on ActiveRecord.tt and do 'run custom tool', and...
1 Warning: "Multiple template directives were found in the template. All but the first one will be ignored. Multiple parameters to the template directive should be specified within one template directive." in file 'Settings.ttinclude'
Right-click on the project do 'rebuild', and...
6 errors, here is a sample -
The type or namespace name 'CoreInfoDB' does not exist in the namespace 'MineSpace' (are you missign an assembly reference?)
7 warnings, here is a sample -
'MineSpace.EmailAddrs' overrides Object.Equals(object o) but does not override Object.GetHashCode()

You also need to add and then 'run custom tool' on the files Structs.tt and Context.tt

Related

Error: A namespace cannot directly contain members such as fields EntityFramework.dll' could not be found

enter image description hereI want to create model: add > class > ado.net entity, for my db first project and also want to create CRUD operation by asp.netscaffolding, but failed to create a model with necessary code.and thus i failed to create scaffolding .
in my model file AllahHelp.Context.cs, there is no code, only the text "ErrorGeneratingOutput".
Error 1:
A namespace cannot directly contain members such as fields or methods F:\project\WebApplication8\WebApplication8\Models\AllahHelp.Context.cs 1 1 WebApplication8
Error 2:
Compiling transformation: Metadata file 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools..\IDE\EntityFramework.dll' could not be found F:\project\WebApplication8\WebApplication8\Models\AllahHelp.tt 1 1 WebApplication8
If there is an error transforming your .tt files into class files, your class files will just have "ErrorGeneratingOutput" in the source file, which causes a "namespace cannot directly contain members such as fields" error, but doesn't really have anything to do with that.
Your actual error sounds like you're missing a reference to EntityFramework.dll. Right click the project, choose "Manage NuGet Packages..." and find and install EntityFramework to your project.
In some situations I've also run into a problem where since the transformation occurs before files are copied, referenced dlls don't ever get copied since the error occurs and stops the process. In this case you would need to remove the model from your project temporarily, successfully compile the project, and then add the model back.
According to this similar question it could also be because of your install path. If that is your issue, try to find where the dll is, and correct the environment variable VS120COMNTOOLS (Control Panel -> System -> Advanced System Settings -> Environment Variables -> System Variables)
(Be careful changing system variables, though.)
I was getting this error when attempting to build a project using .tt templates. I fixed the issue by checking everywhere that I used C# code injection and making sure that I closed each section of C# code by including #>.
Example:
Problematic code:
{
"find": "__LOCATION__",
"replaceWith": "<#= deployment.Location"
},
Fixed code:
{
"find": "__LOCATION__",
"replaceWith": "<#= deployment.Location #>"
},

How can I reference another DB from a VS DB project?

We have several databases, say DB1, DB2, DB3 etc.
They have to have identical code base, so we use a DB project in Visual Studio 2012 and generate a SQL script for deployment based on comparison between the project and UAT/Prod DB1. Then this script is applied to DB1-DBn.
For the very first time in the history of this DB project I had to create a function that contained a hardcoded database name, example:
inner join DB1.schema.table1 as t1 on
And now the project cannot be built or comparison cannot be updated or script generated (Update and Generate Script buttons disabled) due to a number of errors pertaining to that database reference, as VS seems to believe that DB1 does not exist.
I tried to add a project level SQLCMD variable $(DB) and set it to DB1 default value and use it as
inner join [$(DB1)].schema.table1 as t1 on
to work around the errors, but it did not seem to make any difference.
Edit:
A suggestion was made to add a circular project reference to itself and assign to it the same variable I was trying to add manually, not sure how to accomplish that.
As per this article the reference should be added to a manually extracted .dacpac file as follows:
Extracted .dacpac file from the targed DB with the following command:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\sqlpackage.exe" /SourcePassword:p /SourceUser:u /Action:Extract /ssn:192.168.2.1 /sdn:DB1 /tf:DB1.dacpac
Included that as a database reference. It automatically assigned the correct SQLCMD variable name and the error disappeared.
From the source control point, even though when adding a database reference to a .dacpac file automatically creates a SQLCMD variable, it does not add the file to the project. The .dacpac file used still has to be added to the project as an existing item, which is kind of lame. Doing that in the solution explorer I encountered an error and had to do that through the team explorer instead, where that worked.

Visual studio export template replaces original projectname with $safeprojectname$

My project is a mvc4 project in visual studio 2013 ultimate.
I tryd to send my project by following the steps :
File > Export template > (leave all the options as default)
I get a zip that i unpack. If i open the unpacked solution and run the program i get alot of errors. It looks like visual studio replaced all the text that contained the projectname with $safeprojectname$. How can i export the project without visual studio replacing all the 'projectname' spots so that i can run my program.
I tryed creating a new project (console application) with no code in it, if i export it and import it i get the same message first i get :
Warning 1 Load of property 'RootNamespace' failed. The string for the root namespace must be a valid identifier. SvenEind
and after running i get
190 errors 31 warnings
I tryd importing http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/building-the-ef5-mvc4-chapter-downloads and that worked for me.
So i guess the problem is in some kind of settings for exporting files.
replaced all the text that contained the projectname with $safeprojectname$
This is very much by design. You created a project template, a cookie-cutter for new projects. You are not supposed to do anything with the .zip archive. It should sit patiently in your "My Exported Templates" folder. Until the day arrives that you want to start a new project.
You then can pick the template instead of using one of the built-in ones that were preinstalled by the Visual Studio installer. Visual Studio prompts you for the project name. It then unzips the archive, copying the files into your new project directory. And modifies the files, $safeprojectname$ is substituted by the new project name you entered. You now have a good start for your new project, using the settings and assets that you saved earlier when you created the template.
Sounds like you had an entirely different use in mind, I can't guess at the intention from the question.
Hmmm. I got this error on Build:
The app manifest must be valid as per schema: Line 42, Column 18, Reason: '$safeprojectname$' violates pattern constraint of '([A-Za-z][A-Za-z0-9]*)(\.[A-Za-z][A-Za-z0-9]*)*'. The attribute 'Id' with value '$safeprojectname$' failed to parse.
So I grabbed the project name from the VS Configuration Manger and put it in the app manifest like this.
<Applications>
<Application
Id="CordovaApp.Windows10"
And the error went away and the project built. HTH.

sql71501 sql parameter has unresolved reference to build-in type

from VS2012 I created a Database project and created ad custom type
CREATE TYPE dbo.TypeProductCategoryTable AS TABLE
( ProductID int, CategoryID int )
Now when I write stored procedure with using this type, i get compile error
sql71501 sql parameter has unresolved reference to build-in type
Procedure
CREATE PROCEDURE [dbo].[usp_ProductCategory_Mapping]
#tvProdCat dbo.ProductCategoryTableType READONLY
AS
insert into tProductCategories(ProductId,CategoryId)
SELECT #tvProdCat
RETURN 0
How to handle this? Can we create custom type on Visual studio Database project
you can use pre-deployment script in visual studio project.
for doing this you need to add 2 files in VS:
1.
create UserDefinedTableType.sql in your database project in VS and put the scrip of creating table type inside this script.
2.in your database project add UserScripts -> pre-Deployment script and call the script in the step 1 here . using this code :
:r .\Scripts\Pre-Deployment\UserDefinedTableType.sql
the unresolved reference will be resolved with this solution
I had this issue and realized that somehow the build node for the TVP was inserted below the SP where it was used within my .sqlproj file. once I moved the TVP above the SP I no longer received the error in VS and the project deployed as expected with no errors.
I had not realized previously that the order of the build nodes in the .sqlproj mattered but apparently the the DACPAC Compiler wasn't built to intelligently determine the order of the build process which makes sense in retrospect. I'd rather have that control even if it did in this case trip me up.

Subsonic ActiveRecord

I am trying to get Subsonic(3.0.0.4) to work(.Net 3.5 - VS2010), simple install that looks at the Northwind database using ActiveRecord. I used the 5 minute demo from http://subsonicproject.com/docs/The_5_Minute_Demo. I added the reference to the dll, un-blocked the T4 templates that I downloaded, changed the Settings.ttinclude to point to the northwind database in 3 places as per video. Dragged the T4 templates (as per video) to my Models folder in VS2010.
If I compile I keep on getting "Type or namespace name 'something' could not be found" There are 13 error (same amount as the amount of tables in the DB..) so I am guessing that there must be some command that turns every table into a class, but where? I right-clicked on ActiveRecord.tt and Context.tt and selected "Run custom tool" with no success.
Any help, I follow this demo to the letter and still get the error. Any help.. please?
Ok, I do not know why but after I added Structs.tt it compiled fine. I still could not get the foreach in the view to work, the error was: foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'
I could see out of the corner of Rob's video that it did not inherit from System.Web.Mvc.ViewPage and figured out that it should be System.Web.Mvc.ViewPage>
Sometimes clever people(Like Rob) cannot think for proper dummies(like me) Such is life?

Resources